我有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條經驗 獲得超8個贊
您無法獲得“原始”時區,因為它從來都不是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
提交
取消