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

我有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直接阅读。


开心每一天1111
浏览 70回答 1
1回答

慕仙森

您无法获得“原始”时区,因为它从来都不是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,它都是同一时间点。根据您的要求,如果您对本地客户端时间感兴趣,您可能希望发送不同的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java