错误的时间转换为纪元时间

Posted

技术标签:

【中文标题】错误的时间转换为纪元时间【英文标题】: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上使用它。 【参考方案1】:

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

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

【讨论】:

您的代码是正确的。对于用法,语言环境和时区是两个不同的概念,它们之间并没有真正的关系。虽然您也可以有意义地设置格式化程序的语言环境,但这与此处无关。

以上是关于错误的时间转换为纪元时间的主要内容,如果未能解决你的问题,请参考以下文章

Java将日期转换为纪元值会产生错误的输出

Unix 纪元时间使用 PHP 错误地转换为人类可读

将 JSON 纪元时间转换为本地人类可读日期

为啥将纪元时间转换错误?啥是正确和最快的方法?

将纪元时间戳转换为可读日期不起作用

从整数纪元时间值转换为本地时间