我有一个日期时间字符串,如下所示,它们之间没有空格:
TueDec2618:47:09UTC2017
是否可以将其转换为unix时间戳?日期时间字符串将始终采用该格式。
答案 0 :(得分:3)
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,所以不能使用
ZonedDataTime
和DateTimeFormatter
,但我可以使用joda库。
的确可以。 java.time只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。虽然Joda-Time是另一个不错的解决方案,但我认为您应该选择ThreeTen Backport而不是Joda-Time(尽管意见分歧)。 Joda-Time主页建议:
请注意,Joda-Time被认为是很大程度上“完成”的项目。 没有计划进行重大增强。如果使用Java SE 8,请迁移 到
java.time
(JSR-310)。
所以java.time似乎是面向未来的解决方案。
java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。