【发布时间】:2015-01-08 04:22:43
【问题描述】:
在 Java 中,确定特定语言环境的任何给定 Date 对象的夏令时的公认方法是什么。
例如,如果您有两个日期对象
Date date = new Date("01/01/2014");
Date date2 = new Date("01/07/2014");
区域设置为“欧洲/伦敦”,“日期”应返回 GMT,日期 2 应返回“BST”
String timeZone = new String("Europe/London");
TimeZone tz = TimeZone.getTimeZone(timeZone);
System.out.println(tz.getDisplayName(tz.inDaylightTime(date),
TimeZone.SHORT));
TimeZone tz2 = TimeZone.getTimeZone(timeZone);
System.out.println(tz2.getDisplayName(tz2.inDaylightTime(date2),
TimeZone.SHORT));
这两个例子都打印 GMT,第二个不应该打印 BST 吗?
【问题讨论】:
-
Europe/London不是Locale,它是proper time zone name。避免使用 3 或 4 个字母的缩写,因为它们既不标准化也不独特。 UTC除外。