显示UTC而不是EST的本地显示EST的Linux服务器

我无法弄清楚为什么下面的代码的时区一直显示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 az"); return format.format(calendar.getTime()); } 

您已将日历设置为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 az", Locale.US); format.setTimeZone(TimeZone.getTimeZone("America/New_York")); return format.format(getDateCreated()); } 

此外,我强烈建议您使用上面的全时区ID,而不是像“EST”这样的缩写。 (这里有两个问题 – 首先,EST在不同的地点可能意味着不同的东西;其次,美国的EST应该总是意味着东部的标准时间,而我假设你想用东部的时间格式,无论是标准的还是日光的,时间是否有效。)