为了账号安全,请及时绑定邮箱和手机立即绑定

从 ObjectStream 读取 java.sql.Timestamp 对象而不更改时间值?

从 ObjectStream 读取 java.sql.Timestamp 对象而不更改时间值?

开心每一天1111 2022-10-20 17:04:34
我有ObjectInputStream一个java.sql.Timestamp对象。我想读取发送的实际值,不受时区的影响。(客户端与服务器位于不同的时区)。我怎么做?// ois is an objectinputstream  Object obj = ois.readObject();甚至obj.toString()返回一个改变的“时间”。我无法获取输入流的时区信息。java.sql.Time并且java.sql.Date不会受到影响。只有时间戳是问题所在。假设客户端从 EST 发送输入流,时间是下午 6:00,当我在 PST 中接收到它时6:00 pm转换为3:00 pm. 我不想要那个。我想6:00 pm直接阅读。
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

您无法获得“原始”时区,因为它从来都不是java.sql.Timestamp对象的一部分。当一个java.sql.Timestamp对象被序列化时,只有该对象的内部nanos字段被序列化(不包括基类的信息java.util.Date),如序列化表单java.sql.Timestamp中所述:

java.sql.Timestamp扩展Date实现可序列化

serialVersionUID:2745179027874758501L

序列化字段

纳米

整数纳米

当您再次反序列化此对象时,您将获得一个java.sql.Timestamp内部nanos字段设置为与以前一样的确切值的对象。在这两种情况下,两个对象都通过 unix 时间戳引用相同的时间点。无论是美国东部标准时间下午 6:00 还是太平洋标准时间下午 3:00,它都是同一时间点。

根据您的要求,如果您对本地客户端时间感兴趣,您可能希望发送不同的值。


查看完整回答
反对 回复 2022-10-20
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信