关于时区:Java在以色列获得当前时间

Java get current time in Israel

我想在java中获取当前在以色列的时间这是我的代码:

1
2
3
4
5
6
TimeZone timeZone = TimeZone.getTimeZone("Israel");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(timeZone);

DateFormat timeFormat = new SimpleDateFormat("HH:mm");
String curTime=timeFormat.format(calendar.getTime());

但它总是让我比以色列目前的时间减少7个小时有人知道如何在以色列实现目前的时间?


您在日历中设置了时区,但您应该在DateFormat中进行设置。 此外,您应该使用Asia/Jerusalem作为时区名称。 您根本不需要Calendar - 只需new Date()即可获得当前时刻:

1
2
3
DateFormat timeFormat = new SimpleDateFormat("HH:mm");
timeFormat.setTimeZone(TimeZone.getTimeZone("Asia/Jerusalem"));
String curTime = timeFormat.format(new Date());

您应该注意到耶路撒冷的时区特别难以预测(它波动很大),因此如果您的JVM使用的时区数据源已过期,则可能不准确。


我不确定"以色列"是否是一个有效的时区,尝试"亚洲/耶路撒冷",看看这篇文章


如果您想显示日期以及您的语言时间,请尝试使用LocaleTimeZone

1
2
3
4
Locale aLocale = new Locale.Builder().setLanguage("iw").setRegion("IL").build();
DateFormat timeFormat = new SimpleDateFormat("MMM y HH:mm", aLocale);
timeFormat.setTimeZone(TimeZone.getTimeZone("Asia/Jerusalem"));
String curTime = timeFormat.format(new Date());

注意:这不是这个问题的答案,只是在这里,如果OP正在寻找以下语言进一步解析日期。