我无法弄清楚为什么下面代码的时区一直显示UTC而不是EST.在我的本地计算机上它显示EST,即使我在MST时间但在实际服务器上它仍然显示UTC.任何线索?
Mon Nov 9 2015 1:58:49 PM UTC @JsonIgnore public String getDateCreatedFormatted() { Calendar calendar = Calendar.getInstance(); calendar.setTime(getDateCreated()); calendar.setTimeZone(TimeZone.getTimeZone("EST")); SimpleDateFormat format = new SimpleDateFormat("EEE MMM d yyyy h:mm:ss a z"); return format.format(calendar.getTime()); }
Jon Skeet.. 16
您已将日历设置为EST,但尚未设置时区SimpleDateFormat
,这是用于格式化的时区.只需使用:
format.setTimeZone(TimeZone.getTimeZone("America/New_York"));
在格式化之前Date
.Calendar
根据它的外观,你根本不需要它:
@JsonIgnore public String getDateCreatedFormatted() { SimpleDateFormat format = new SimpleDateFormat("EEE MMM d yyyy h:mm:ss a z", Locale.US); format.setTimeZone(TimeZone.getTimeZone("America/New_York")); return format.format(getDateCreated()); }
另外,我强烈建议您使用上面的全时区ID,而不是像EST那样含糊不清的缩写.(有两个问题 - 首先,EST在不同的位置可能意味着不同的东西;其次,美国EST应该始终意味着东部标准时间,而我假设你想要使用东部时间格式,标准或日光取决于是否夏令时时间有效或无效.)
您已将日历设置为EST,但尚未设置时区SimpleDateFormat
,这是用于格式化的时区.只需使用:
format.setTimeZone(TimeZone.getTimeZone("America/New_York"));
在格式化之前Date
.Calendar
根据它的外观,你根本不需要它:
@JsonIgnore public String getDateCreatedFormatted() { SimpleDateFormat format = new SimpleDateFormat("EEE MMM d yyyy h:mm:ss a z", Locale.US); format.setTimeZone(TimeZone.getTimeZone("America/New_York")); return format.format(getDateCreated()); }
另外,我强烈建议您使用上面的全时区ID,而不是像EST那样含糊不清的缩写.(有两个问题 - 首先,EST在不同的位置可能意味着不同的东西;其次,美国EST应该始终意味着东部标准时间,而我假设你想要使用东部时间格式,标准或日光取决于是否夏令时时间有效或无效.)