在 Java 中更改时区而不更改时间
我从 SOAP Web 服务接收到一个日期时间,但没有 timzone 信息。因此,轴反序列化程序假定 UTC。但是,日期时间实际上是悉尼时间。我通过减去时区偏移量解决了这个问题:
Calendar trade_date = trade.getTradeDateTime();
TimeZone est_tz = TimeZone.getTimeZone("Australia/Sydney");
long millis = trade_date.getTimeInMillis() - est_tz.getRawOffset();
trade_date.setTimeZone( est_tz );
trade_date.setTimeInMillis( millis );
但是,我不确定此解决方案是否也考虑了夏令时。我认为应该这样做,因为所有操作都在UTC时间。在Java中操作时间的任何经验?关于如何解决这个问题的更好主意?