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

问题描述 投票:-1回答:1

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

TueDec2618:47:09UTC2017

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

java date time java-7 jodatime
1个回答
3
投票

java.time和ThreeTen Backport

comment by ernest_k经过深思熟虑并解决了您的问题:

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

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

解析日期时间2017-12-26T18:47:09Z [Zulu] Unix时间戳1514314029

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

我仍然在Java 7 btw所以不能使用ZonedDataTimeDateTimeFormatter但我可以使用joda库。

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

  • 在Java 8及更高版本和更新的Android设备上(来自API级别26),现代API内置。
  • 在Java 6和7中获取ThreeTen Backport,现代类的后端(JST 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上使用Android版的ThreeTen Backport。它被称为ThreeTenABP。并确保从org.threeten.bp导入子包的日期和时间类。

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

请注意,Joda-Time被认为是一个很大程度上“完成”的项目。没有计划重大改进。如果使用Java SE 8,请迁移到java.time(JSR-310)。

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

链接

© www.soinside.com 2019 - 2024. All rights reserved.