Java - 未获取特定时区的时间戳

Java - Not getting the timestamp for a specific timezone

在下面的代码中,我试图获取 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);