UTC时间戳未返回正确的时间

时间:2013-04-16 16:30:37

标签: java android simpledateformat date-formatting

我从EST中的服务器获取了一个日期字符串,因此我将其转换为

示例日期2013-04-16T11:56:07.15

incidentDate = l.item(0).getTextContent();                                  
DateFormat dformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US);
dformat.setTimeZone(TimeZone.getTimeZone("America/New York"));
Date timestamp;

try
{                                   
    timestamp = dformat.parse(incidentDate);
    incidentDateLong = timestamp.getTime();

}
catch (ParseException e1) {
    e1.printStackTrace();
}

返回的时间戳为1366113367015

如果我将其插入本网站的转换器中以检查日期

http://www.ruddwire.com/handy-code/date-to-millisecond-calculators/

毫秒似乎不是正确的日期,它给了我Tue Apr 16 2013 07:56:07 GMT-0400 (Eastern Daylight Time)这不是从服务器发送给我的。

当我转换日期时,它会将日期拉回到实际日期之后

Date incDate = new Date(dateInMili);

DateFormat dformat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a",Locale.US);

String dateStr = dformat.format(incDate);

格式化程序出了什么问题?我不明白这个问题

1 个答案:

答案 0 :(得分:2)

这是问题所在:

TimeZone.getTimeZone("America/New York")

这不是有效的时区ID。你想要:

TimeZone.getTimeZone("America/New_York")

请注意下划线。就个人而言,我认为getTimeZone没有表明它实际上没有找到你所要求的时区,这是一种耻辱,但很长一段时间都是如此:(