Java - 没有获取特定时区的时间戳

时间:2015-02-08 04:11:09

标签: java timezone

在下面的代码中,我试图获取时区PST的dateformat,但我没有得到预期的输出。 但是,如果我取消注释2行(setDefault时区),我会得到预期的结果。

你有什么好的选择吗?

    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中的当前日期是2015年2月20日(晚上12点到凌晨2点),那么PST的预期输出将是2015年2月07日(PST比CST晚2小时)。但是,我的输出结果是2015年2月08日。

1 个答案:

答案 0 :(得分:1)

您的DateFormat未从TimeZone继承Calender。为了演示,我添加了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);