我有点困惑,这些时间戳是什么格式,我被告知要使用的格式是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
。我不明白为什么有4节的时间?:Hour:Minute:Second
在实际的数据我有当格式我应该使用只有3个时间段。这些日期时间时间戳实际上不是yyyy-MM-dd.HH:mm:ss
?
不,您的怀疑是正确的,您的示例日期时间字符串不是格式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.time
是现代 Java 日期和时间 API。根据我的经验,与它合作要好得多。
Oracle 教程:解释如何使用java.time
. 您可能特别想学习Parsing and Formatting一节。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句