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

标签 java 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);

关于Java - 未获取特定时区的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28390470/

相关文章:

java -version 显示旧的 jdk 1.6 版本

ios - TimeZone:获取缩写而不是 GMT 偏移量

ios - 在项目中全局更改 FSCalendar 的时区

java - 在将 Java 日期写入 SQL TIMESTAMP 列之前,JDBC 是否会将日期从 JVM 时区转换为数据库 session 时区?

java - 如果输出为0,如何打印数组?

Java XPath API 提取选择性文本

java - 是否可以使用 OpenPDF 在文档上加电子印章?

java - 如何处理国际时间?

python - python 中的时区感知与时区天真

java - 如果我们在字符串中有所需的货币代码,我们如何更改 freemarker 上的默认货币?