【问题标题】:Wrong hours converted to epoch time错误的时间转换为纪元时间
【发布时间】:2018-06-05 23:43:46
【问题描述】:

我正在尝试使用纪元时间方法转换日期。
下面是这些代码

long epoch = 0;
try {
    epoch = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse("12/11/2017 23:20:23")
            .getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

它给了我纪元时间:1513052423

一旦转换给:Tuesday 12 December 2017 04:20:23 而不是23:20:23:/

【问题讨论】:

  • SimpleDateFormat 早已过时并且出了名的麻烦。即使在 Android 上,我也建议您考虑一下现代 Java 日期和时间 API 的 JSR-310 AKA java.time。使用起来要好得多,并且会给你更清晰的代码。你可以通过ThreeTenABP在Android上使用它。

标签: java android simpledateformat epoch hour


【解决方案1】:

根据documentation SimpleDateFormat 是区域敏感的。请检查或设置您的时区

sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

【讨论】:

  • 您的代码是正确的。对于用法,语言环境和时区是两个不同的概念,它们之间并没有真正的关系。虽然您也可以有意义地设置格式化程序的语言环境,但这与此处无关。
猜你喜欢
  • 2017-11-22
  • 2021-01-23
  • 2014-10-17
  • 1970-01-01
  • 2012-09-06
  • 2012-08-12
  • 2019-04-09
  • 2014-05-03
  • 2012-01-30
相关资源
最近更新 更多