【问题标题】:UTC timestamp not returning correct timeUTC 时间戳未返回正确时间
【发布时间】:2013-04-16 16:30:37
【问题描述】:

我从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);

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

【问题讨论】:

标签: java android simpledateformat date-formatting


【解决方案1】:

这就是问题所在:

TimeZone.getTimeZone("America/New York")

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

TimeZone.getTimeZone("America/New_York")

注意下划线。就我个人而言,我认为 getTimeZone 没有表明它实际上没有找到您所要求的时区,但这种情况已经存在很长时间了 :(

【讨论】:

  • 哇,我只花了 4 个小时试图弄清楚这一点,而这只是一个愚蠢的下划线......真是浪费时间。不过谢谢!!
猜你喜欢
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 2019-02-16
  • 2011-06-16
  • 2017-05-28
相关资源
最近更新 更多