我有一个日期时间的字符串,就像这样,它们之间没有任何空格:
TueDec2618:47:09UTC2017
有没有办法将其转换为unix时间戳?日期时间字符串将始终采用该格式。
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 btw所以不能使用
ZonedDataTime
和DateTimeFormatter
但我可以使用joda库。
的确可以。 java.time只需要至少Java 6。
org.threeten.bp
导入子包的日期和时间类。虽然Joda-Time将是另一个不错的解决方案,但我相信你应该更喜欢TriTen Backport而不是Joda-Time(尽管意见不同)。 Joda-Time主页建议:
请注意,Joda-Time被认为是一个很大程度上“完成”的项目。没有计划重大改进。如果使用Java SE 8,请迁移到
java.time
(JSR-310)。
所以java.time似乎是面向未来的解决方案。
java.time
首次被描述。java.time
的后端到Java 6和7(JST-310的ThreeTen)。