【发布时间】:2018-05-30 09:40:53
【问题描述】:
我想将 19:19:00 这样的时间格式化为不同的时区。如果我使用SimpleDateFormat,它总是考虑到纪元的开始:1970.01.01。
一些时区在纪元开始和现在有不同的偏移量。例如,现在与欧洲/基辅的默认偏移量是 UTC+0200,但在 1970 年是 UTC+0300。这意味着如果我在 Europe/Kiev 下运行我的服务器,在 Europe/Berlin(UTC+0100) 下登录的客户端将看到三个小时而不是两个小时。
我可以通过为java.sql.Time 编写自定义格式化程序来解决这个问题。但我想问一下,也许有一些常见的方法或 Java 工具/库可以解决它。
另一种解决方案是使用 joda-time:
TimeZone.setDefault(TimeZone.getTimeZone("Europe/Kiev"));
DateTimeZone.setDefault(DateTimeZone.forID("Europe/Kiev"));
DateTimeFormat.forPattern("HH:mm:ss.SSS")
.withZone(DateTimeZone.forID("Europe/Berlin"))
.print(Time.valueOf("19:00:00").getTime());
【问题讨论】:
-
java.time怎么样,你试过了吗?
标签: java formatting timezone jodatime