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