Java getTimeZone()对于不同类型的输入表现不同
对于下面的代码,我得到了不同的输出Java getTimeZone()对于不同类型的输入表现不同,java,date,timezone,dst,Java,Date,Timezone,Dst,对于下面的代码,我得到了不同的输出 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 = Calen
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
08/22/2013 true
现在美国/洛杉矶是GMT-8/UTC-8或PST。但当我将参数从GMT-8改为America/Los_Angeles时
输出为:
08/22/2013 false
08/22/2013 true
无法使用类似PST的缩写,因为它已被弃用。CST也可以指中央标准时间和中国标准时间
我的输入是-8、-9-14等,我希望预先输入GMT/UTC,以了解我是否可以在给定日期获得DST激活
请在这方面指导我。结果是正确的,当您使用偏移量指定
GMT
时,无法知道这是哪个国家/城市,因此无法确定日间照明时间是否处于活动状态
因此,对于使用GMT
和偏移量指定的所有时区,inDaylightTime()
将为false
CST
在Java中是中央标准时间
,您可以通过以下代码行进行检查:
System.out.println(TimeZone.getTimeZone("CST").getDisplayName());
中国标准时间
Java区域ID为CTT
编辑
考虑使用更多最新的时区
信息结果是正确的,如@iTech所述。只需添加,您可以查找可用的时区ID
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());
这不是预期的吗?您不能保证GMT-8下的所有位置都有DST。DST由每个国家/州政府进行不同的管理。Java时区有一个可用ID列表(getAvailableIDs()),如美国/博伊西美国/剑桥湾、美国/奇瓦瓦、美国/道森河美国/丹佛、美国/埃德蒙顿、美国/赫莫西洛美国/因纽维克、美国/马萨特兰、美国/奥金纳加美国/凤凰城、美国/希普洛克、,美国/Yellowknife是随机的,这里并不是涵盖所有城市(例如波士顿、华盛顿)。因此,我如何确保使用不推荐使用的有限选项TimeZone.getTimeZone(“CST”)获取日光信息。是的,最好使用全名,尤其是inDaylightTime
来工作您的意思是时区t=TimeZone.getTimeZone(“中央标准时间”);?我认为这不受支持。不,它不会起作用,我的意思是使用完整的区域名称,例如America/Los_Angeles
let us