【问题标题】:Time stamp not converted in date properly in java时间戳未在 Java 中正确转换为日期
【发布时间】:2023-03-16 15:15:01
【问题描述】:

我正在尝试使用此代码将时间戳转换为日期:

String str = "14799744000000800";//last four digit is time zone
 DateFormat timeZoneFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
 timeZoneFormat.setTimeZone(TimeZone.getTimeZone("GMT-8"));

 Date time = new java.util.Date(Long.parseLong(str));
 System.out.println(timeZoneFormat.format(time));

但它会打印 '21-03-470955 00:00:00' 而不是 21-03-2016 00:00:00。

如您所见,年份部分未正确转换。如何解决此问题?

【问题讨论】:

  • 你确定你的毫秒值是正确的吗?据我所见,这种转换是可以的。当您的值 14799744000000800 更大时,21-03-2016 是 1458518400000 毫秒
  • 最后四位是像这样的时区 1479974400000-0800

标签: java datetime time timezone timestamp


【解决方案1】:

当前的毫秒值是1481007881541,所以14799744000000800 似乎确实在未来。

编辑 根据您以后的 cmets,您可以从字符串中删除最后四位数字。

【讨论】:

  • 最后四位是像这样的时区 1479974400000-0800
  • 您编写代码的想法是日期接受一个 Long 值,即自纪元以来的秒数。日期始终是格林威治标准时间,只是它的显示可能在不同的 TZ 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 2012-08-01
  • 1970-01-01
  • 2022-07-19
  • 2014-05-16
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多