2017-01-01 00:08:57.231 格式等于 yyyy-MM-dd.HH:mm:ss?
2017-01-01 00:08:57.231 format equals yyyy-MM-dd.HH:mm:ss?
我对这些时间戳的格式有点困惑。有人告诉我要使用的格式是 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
。我不明白为什么在我应该使用的格式只有 三个个时间段。这些日期时间戳实际上不是 yyyy-MM-dd.HH:mm:ss
的格式吗?
这些时间戳采用 yyyy-MM-dd HH:mm:ss:ms
格式,最后三位数字为毫秒。
不,您的怀疑是正确的,您的示例 date-time 字符串 不是 格式 yyyy-MM-dd.HH:mm:ss
。 dd 和 HH 之间的点一定是一个简单的错误,它应该是 space 因为在时间戳字符串中日期和时间之间有一个 space。此外,您的所有示例字符串都包含毫秒:在 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
对于好奇的书呆子:可以解析字符串,或者更准确地说是大部分字符串,使用给定的格式,只将点更正为 space:
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
在评论中,您提供了一个使用 SimpleDateFormat
class 的片段。这个 class 不仅早已过时,而且出了名的麻烦。我看不出你为什么要使用它。相反,我使用 java.time
,现代 Java 日期和时间 API。根据我的经验,使用它要好得多。
链接
Oracle tutorial: Date Time explaining how to use java.time
. You may especially want to study the section Parsing and Formatting.
我对这些时间戳的格式有点困惑。有人告诉我要使用的格式是 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
。我不明白为什么在我应该使用的格式只有 三个个时间段。这些日期时间戳实际上不是 yyyy-MM-dd.HH:mm:ss
的格式吗?
这些时间戳采用 yyyy-MM-dd HH:mm:ss:ms
格式,最后三位数字为毫秒。
不,您的怀疑是正确的,您的示例 date-time 字符串 不是 格式 yyyy-MM-dd.HH:mm:ss
。 dd 和 HH 之间的点一定是一个简单的错误,它应该是 space 因为在时间戳字符串中日期和时间之间有一个 space。此外,您的所有示例字符串都包含毫秒:在 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
对于好奇的书呆子:可以解析字符串,或者更准确地说是大部分字符串,使用给定的格式,只将点更正为 space:
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
在评论中,您提供了一个使用 SimpleDateFormat
class 的片段。这个 class 不仅早已过时,而且出了名的麻烦。我看不出你为什么要使用它。相反,我使用 java.time
,现代 Java 日期和时间 API。根据我的经验,使用它要好得多。
链接
Oracle tutorial: Date Time explaining how to use java.time
. You may especially want to study the section Parsing and Formatting.