Java 了解日期格式2019-10-16 02:37:08.000+;000

Java 了解日期格式2019-10-16 02:37:08.000+;000,java,datetime,timezone,utc,date,Java,Datetime,Timezone,Utc,Date,我的数据输入中有多个日期格式 我的要求是在转换为UTC后存储这些日期。 一些例子: 2019-07-17T15:44:49+06:30:我能够将其转换为UTC,因为+06:30是记录此日期的国家的时区 我有另一个日期格式2019-10-16 02:37:08.000+000。在这种情况下,我不理解+000的含义。请有人解释一下这种格式。我在谷歌搜索时没有得到太多信息。在理解+000时,我可以看到两种可能性 这是个错误。它应该是+00、+0000和+00:00中的一个。只有格式的原始发布者才能知道

我的数据输入中有多个日期格式 我的要求是在转换为UTC后存储这些日期。 一些例子: 2019-07-17T15:44:49+06:30:我能够将其转换为UTC,因为+06:30是记录此日期的国家的时区


我有另一个日期格式2019-10-16 02:37:08.000+000。在这种情况下,我不理解+000的含义。请有人解释一下这种格式。我在谷歌搜索时没有得到太多信息。

在理解
+000
时,我可以看到两种可能性

  • 这是个错误。它应该是
    +00
    +0000
    +00:00
    中的一个。只有格式的原始发布者才能知道
  • 这是一种自纺格式。这可能意味着与UTC的偏移量为0。可能距离UTC 0小时00分钟,因此偏移量为一位数小时和两位数分钟。但这只是一个猜测,同样只有该格式的原始出版商才能知道
  • Java可以处理选项2:

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .append(DateTimeFormatter.ISO_LOCAL_DATE)
                .appendLiteral(' ')
                .append(DateTimeFormatter.ISO_LOCAL_TIME)
                .appendOffset("+HMM", "+000")
                .toFormatter();
    
        String dateTimeInOtherFormat = "2019-10-16 02:37:08.000+000";
    
        OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeInOtherFormat, formatter);
        System.out.println(dateTime);
    
    这些行的输出为:

    2019-10-16T02:37:08Z


    链接:

    在理解
    +000
    时,我可以看到两种可能性

  • 这是个错误。它应该是
    +00
    +0000
    +00:00
    中的一个。只有格式的原始发布者才能知道
  • 这是一种自纺格式。这可能意味着与UTC的偏移量为0。可能距离UTC 0小时00分钟,因此偏移量为一位数小时和两位数分钟。但这只是一个猜测,同样只有该格式的原始出版商才能知道
  • Java可以处理选项2:

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .append(DateTimeFormatter.ISO_LOCAL_DATE)
                .appendLiteral(' ')
                .append(DateTimeFormatter.ISO_LOCAL_TIME)
                .appendOffset("+HMM", "+000")
                .toFormatter();
    
        String dateTimeInOtherFormat = "2019-10-16 02:37:08.000+000";
    
        OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeInOtherFormat, formatter);
        System.out.println(dateTime);
    
    这些行的输出为:

    2019-10-16T02:37:08Z


    链接:

    +000
    必须是错误。它应该是
    +00
    +0000
    +00:00
    。这可能意味着数据已经在UTC中。但正如奥莱所说,三位数可能是一个错误。至少,它不符合ISO8601。
    +000
    一定是错误。它应该是
    +00
    +0000
    +00:00
    。这可能意味着数据已经在UTC中。但正如奥莱所说,三位数可能是一个错误。至少,它不符合ISO8601标准。