1

我从服务器中获取日期字符串,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);

我的格式化程序有问题吗?我不明白这个问题

4

1 回答 1

2

这就是问题:

TimeZone.getTimeZone("America/New York")

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

TimeZone.getTimeZone("America/New_York")

注意下划线。就我个人而言,我认为getTimeZone没有任何迹象表明它实际上没有找到你所要求的时区是一种耻辱,但这种情况已经很久了:(

于 2013-04-16T16:35:21.790 回答