在下面的代码中,我试图获取时区 PST 的日期格式,但我没有得到预期的输出。 但是,如果我取消注释这两行(setDefault timezone),我将得到预期的结果。
你有什么好的选择吗?
System.out.println("TimeZone.getDefault():"+TimeZone.getDefault()); // CST
//TimeZone.setDefault(TimeZone.getTimeZone("PST"));
Calendar cal = java.util.Calendar.getInstance(SimpleTimeZone.getTimeZone("PST"));
//Calendar cal = java.util.Calendar.getInstance();
Date c = cal.getTime();
String out = new java.text.SimpleDateFormat("MMMMMddyyyy").format(c);
System.out.println("out:"+out);
如果 CST 的当前日期是 February082015(晚上 12 点到凌晨 2 点),那么 PST 的预期输出将为 February072015(PST 比 CST 晚 2 小时)。但是,我得到的输出为 February082015。
最佳答案
您的DateFormat
不会从Calender
继承TimeZone
。为了进行演示,我添加了一个 Z
(它将显示时区偏移量)。在设置和不设置TimeZone
的情况下运行它,并解释您观察到的行为
DateFormat df = new SimpleDateFormat("MMMMMddyyyy Z"); // <-- The Z is TZ
df.setTimeZone(SimpleTimeZone.getTimeZone("PST")); // <-- Add/Remove this
String out = df.format(c);
关于Java - 未获取特定时区的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390470/