Java - 没有得到一个特定时区的时间戳
在下面的代码中,我试图获取时区PST的dateformat,但我没有得到预期的输出。 但是,如果我取消注释2行(setDefault时区),我会得到预期的结果。Java - 没有得到一个特定时区的时间戳
你有什么好的选择吗?
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到上午02点),那么对于PST预期输出将是February072015(PST是2小时后面CST)。但是,我得到的输出截止日期为二零一五年二月。
您的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);
Thx回复。其实,我不想改变格式。如果我运行上述操作,我会输出“February082015 -0600”作为输出。 – 2015-02-08 06:06:16
这就是PST。然后删除Z. – 2015-02-08 06:08:13
我没有注意到在dateformat对象上设置的时区。 – 2015-02-08 06:11:52
预期结果是什么?你得到的结果是什么? – sashwat 2015-02-08 05:22:17
如果CST中的当前日期是2015年2月8日(晚上12点到凌晨1点),那么PST的预期产出将为2015年2月7日(PST为CST后2小时)。但是,我得到的输出截止日期为二零一五年二月。 – 2015-02-08 05:25:11