我想将 19:19:00 之类的时间格式化为不同的时区。如果我使用SimpleDateFormat
它始终考虑纪元的开始:1970.01.01。
有些时区在纪元开始时和现在有不同的偏移量。例如,现在与欧洲/基辅的默认偏移量是 UTC+0200,但在 1970 年它是 UTC+0300。这意味着如果我在欧洲/基辅下运行我的服务器,在欧洲/柏林(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());
你无法格式化just不同时区的时间。你需要一个约会。
如果您想假设该时间的日期是今天,您可以尝试以下代码:
ZoneId originalZone = ZoneId.of("Europe/Kiev");
ZoneId targetZone = ZoneId.of("Europe/Berlin");
LocalTime originalTime = LocalTime.parse("19:19:00");
LocalTime convertedTime = LocalDate.now(originalZone)
.atTime(originalTime)
.atZone(originalZone)
.withZoneSameInstant(targetZone)
.toLocalTime();
System.out.println(convertedTime);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)