将日期时间字符串转换为 unix 时间戳

convert date time string to unix timestamp

我有一个日期时间字符串,它们之间没有任何空格:

TueDec2618:47:09UTC2017

有没有办法将其转换为 unix 时间戳?日期时间字符串将始终采用该格式。

java.time 和 ThreeTen 向后移植

考虑周全,解决了您的问题:

    DateTimeFormatter formatter
            = DateTimeFormatter.ofPattern("EEEMMMddHH:mm:sszyyyy", Locale.ENGLISH);
    String dateTimeString = "TueDec2618:47:09UTC2017";
    ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, formatter);
    long unixTimestamp = dateTime.toEpochSecond();
    System.out.println("Parsed date-time " + dateTime + " Unix timestamp " + unixTimestamp);

运行 在 ThreeTen Backport 1.3.6 上的输出,在 Java 1.7.0_79 上测试,是:

Parsed date-time 2017-12-26T18:47:09Z[Zulu] Unix timestamp 1514314029

问题:如何在 Java 7 上使用 ZonedDateTime 和 DateTimeFormatter?

I am still on Java 7 btw so can't use ZonedDataTime and DateTimeFormatter but I can use joda library.

确实可以。 java.time 只需要至少 Java 6.

  • 在 Java 8 和更新的 Android 设备上(从 API 级别 26)内置了现代 API。
  • 在 Java 6 和 7 中获取现代 类 的 ThreeTen Backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 类。

虽然 Joda-Time 是另一个不错的解决方案,但我相信您应该更喜欢 ThreeTen Backport 而不是 Joda-Time(尽管意见不同)。 Joda-Time 主页建议:

Note that Joda-Time is considered to be a largely “finished” project. No major enhancements are planned. If using Java SE 8, please migrate to java.time (JSR-310).

所以 java.time 似乎是面向未来的解决方案。

链接