对于我们的俄罗斯租户,我们正在使用"欧洲/莫斯科"时区。但是我们在正确的时间提前1小时得到时间。
欧洲/莫斯科是UTC + 3小时。但是当我在欧洲/莫斯科时区形成的打印日期比正确时间提前1小时。
谢谢, Syamala。
答案 0 :(得分:4)
我注意到2014年10月有一个legislative change俄罗斯时区定义;可能你的JRE根本就不知道它。
Java Timezone Updater Utility应该能够为您解决这个问题。随着时间的推移,更新的时区定义最终也应该默认包含在较新的JRE中(尽管现在无法帮助您)。
答案 1 :(得分:3)
你可以使用joda-time api,版本需要大于2.5。因为joda-time api会在俄语时区从2.5版更改后更新时区数据库。
Date timestamp = sdf.parse("11/17/2014 06:13:19");
TimeZone timezone = TimeZone.getTimeZone("Europe/Moscow");
DateTimeZone tz = DateTimeZone.forTimeZone(timezone);
DateTime jodaDateTime = new DateTime(timestamp, tz);
System.out.println(jodaDateTime.hourOfDay().get());
答案 2 :(得分:2)
Java 8:
System.out.println(LocalDateTime.now(ZoneId.of("Europe/Moscow"))
.format(DateTimeFormatter.ofPattern("d.MM.yyyy 'um' HH:mm 'Uhr'")));
答案 3 :(得分:0)
尝试三十岁
import org.threeten.bp.format.*
import org.threeten.bp.*
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timestamp = dtf.format(ZonedDateTime.ofInstant(Instant.ofEpochMilli(MILLISECONDS_VALUE_HERE), ZoneId.of("Europe/Moscow"));