对于下面的代码,我得到了不同的输出
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现在美国/洛杉矶是GMT-8 / UTC-8或PST。但当我把参数从GMT-8转到美国/洛杉矶时,
产出如下:
08/22/2013 true不能使用像PST这样的缩写,因为它被废弃了。科技委也可以是指中央标准时间和中国标准时间。
我的输入类似于-8,-9-14等等,我希望在GMT/UTC之前加上这些输入,以知道我是否能够在给定的日期获得DST激活。
请在这方面指导我。
发布于 2013-02-25 05:51:07
结果是正确的,当您指定带有偏移量的GMT时,无法知道这是哪个国家/城市,因此无法确定Day Light Time是活动的还是非活动的。
因此,inDaylightTime()将是用GMT和偏移量指定的所有时区的false。
Java中的CST是Central Standard Time,您可以通过以下代码行检查自己:
System.out.println(TimeZone.getTimeZone("CST").getDisplayName());Java中的China Standard Time区域ID是CTT
编辑
考虑使用http://joda-time.sourceforge.net/获取更多最新的Timezone信息。
发布于 2013-02-25 06:40:42
正如@iTech所解释的,结果是正确的。只需添加,您就可以查找可用的时区ids
import java.util.TimeZone;
public class TimeZones {
public static void main(String[] args) {
String[] timezones = TimeZone.getAvailableIDs();
System.out.println(timezones.length);
for (String t : timezones) {
System.out.println(t);
}
}
}这将打印一个包含600个可用时区的长列表。
然后,您可以获得缩写的显示名称,如
System.out.println(TimeZone.getTimeZone("IST").getDisplayName());https://stackoverflow.com/questions/15060808
复制相似问题