我有点困惑这些时间戳的格式。我被告知要使用的格式为yyyy-MM-dd.HH:mm:ss
,但所有时间戳都显示为2017-01-01 00:08:57.231
,2017-01-01 07:43:36.348
或2017-01-01 13:25:55.683
。我不明白为什么当我应该使用的格式只有三四个部分时间?:Hour:Minute:Second
>时间段。这些日期时间戳是否实际上不是yyyy-MM-dd.HH:mm:ss
的格式?
答案 0 :(得分:1)
不,您的怀疑是正确的,您的示例日期时间字符串不格式为yyyy-MM-dd.HH:mm:ss
。 dd和HH之间的点必须是一个简单的错误,它应该是一个空格,因为时间戳字符串中的日期和时间之间有一个空格。此外,所有示例字符串都包括毫秒:在00:08:57.231中你有57秒和231毫秒,或者你喜欢57.231秒,所以最后一节也可以称为秒的分数。
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS");
String timestampString = "2017-01-01 00:08:57.231";
LocalDateTime dateTime = LocalDateTime.parse(timestampString, formatter);
System.out.println(dateTime);
输出:
2017-01-01T00:08:57.231
对于神经质的好奇:可能用你给出的格式解析字符串,或者更确切地说是大部分字符串,只是将点校正到一个空格中:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timestampString = "2017-01-01 00:08:57.231";
LocalDateTime dateTime = LocalDateTime.from(
formatter.parse(timestampString, new ParsePosition(0)));
在这种情况下,结果没有毫秒:
2017-01-01T00:08:57
我认为没有理由要你这样做。
在评论中,您提供了使用SimpleDateFormat
类的代码段。这堂课不仅耗时过时,而且也是出了名的麻烦。我没有理由你想要使用它。相反,我使用的是现代Java日期和时间API java.time
。根据我的经验,使用起来非常好。
Oracle tutorial: Date Time解释如何使用java.time
。您可能特别想学习the section Parsing and Formatting。
答案 1 :(得分:-1)
这些时间戳为yyyy-MM-dd HH:mm:ss:ms
格式,后三位为毫秒。