我有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,它都是同一时间点。
根据您的要求,如果您对本地客户端时间感兴趣,您可能希望发送不同的值。
添加回答
举报
0/150
提交
取消