对于下面的代码,我得到了不同的输出
TimeZone t = TimeZone.getTimeZone("GMT-8"); // Also tried UTC-8 and GMT-8:00
//TimeZone t = TimeZone.getTimeZone("America/Los_Angeles");
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date d = null;
Calendar c = Calendar.getInstance(t);
c.set(Calendar.MONTH, Calendar.AUGUST);
c.set(Calendar.DAY_OF_MONTH, 22);
c.set(Calendar.YEAR, 2013);
d = c.getTime();
String s = sdf.format(d);
System.out.println(s + " " + t.inDaylightTime(d));
输出是:
08/22/2013 false
现在 America/Los_Angeles 是 GMT-8/UTC-8 或 PST。但是当我将参数从 GMT-8 更改为 America/Los_Angeles 时,
输出是:
08/22/2013 true
不能像 PST 一样使用缩写,因为它已被弃用。 CST 也可以表示中部标准时间 和中国标准时间。
我的输入类似于 -8、-9 -14 等,我希望在其前面加上 GMT/UTC 以了解我是否可以在给定日期激活夏令时。
请在这方面指导我。
最佳答案
结果是正确的,当您指定带有偏移量的 GMT
时,无法知道这是哪个国家/城市,因此无法确定 Day Light Time
是否处于 Activity 状态。
所以 inDaylightTime()
对于所有使用 GMT
和偏移量指定的时区都将为 false
。
CST
在Java中是Central Standard Time
,你可以通过这行代码自己查看:
System.out.println(TimeZone.getTimeZone("CST").getDisplayName());
中国标准时间
Java中的时区ID是CTT
编辑
考虑使用 Joda time and date API 获取更多最新的 Timezone
信息
关于Java getTimeZone() 对于不同类型的输入表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060808/