2017-01-01 00:08:57.231格式等于yyyy-MM-dd.HH:mm:ss?

时间:2018-04-05 19:08:46

标签: java datetime datetime-format sqldatetime

我有点困惑这些时间戳的格式。我被告知要使用的格式为yyyy-MM-dd.HH:mm:ss,但所有时间戳都显示为2017-01-01 00:08:57.2312017-01-01 07:43:36.3482017-01-01 13:25:55.683。我不明白为什么当我应该使用的格式只有三四个部分时间?:Hour:Minute:Second >时间段。这些日期时间戳是否实际上不是yyyy-MM-dd.HH:mm:ss的格式?

2 个答案:

答案 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

在评论中,您提供了使用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格式,后三位为毫秒。

相关问题