当毫秒数少于 3 位时,以 ISO 8601 格式编写日期时间的正确方法是什么?

问题描述 投票:0回答:1

这是 ISO 8601 中的日期时间时刻示例(以毫秒为单位):

2024-03-02T17:13:07.123Z

如果毫秒部分不是由 3 位数字组成,而是由较少的数字组成(毫秒部分小于 100 毫秒),那么正确的日期时间书写方式是什么。

例如,如果毫秒数是15,那么整秒过去了15毫秒,那么字符串应该怎么写?

2024-03-02T17:13:07.15Z

2024-03-02T17:13:07.015Z

如果毫秒部分等于 0,有很多种可能的写法,但正确的方法是什么?

2024-03-02T17:13:07.0Z

2024-03-02T17:13:07.Z

2024-03-02T17:13:07.000Z

您能否引用文档中说明如何处理这种情况的相关部分?

datetime datetime-format iso8601
1个回答
0
投票

例如,如果毫秒数是 15,那么已经过了 15 毫秒 整秒,字符串应该怎么写?

标准表示为

2024-03-02T17:13:07.015Z

使用Java语言的演示:

import java.time.OffsetDateTime;
import java.time.ZoneOffset;

public class Main {
    public static void main(String[] args) {
        // The second last parameter specifies nanoseconds
        OffsetDateTime odt = OffsetDateTime.of(2024, 3, 2, 17, 13, 7, 15000000, ZoneOffset.UTC);
        System.out.println(odt);
    }
}

输出

2024-03-02T17:13:07.015Z

在线演示

如果毫秒部分等于零,则有多种可能 怎样写,但是正确的写法是什么?

标准表示为

2024-03-02T17:13:07Z

这是格式消除歧义的地方,例如如果您使用

yyyy-MM-dd'T'HH:mm:ss.SSS
作为格式,您的日期时间对象将被打印为
2024-03-02T17:13:07.000Z
。格式只是表示特定用例的对象的一种方式,但表示不会更改值,例如您可以根据您的特定用例将
5
写为
5.0
5.00
5.000
,并且对于每个用例,该值将保留
5

使用Java语言的演示:

import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // The second last parameter specifies nanoseconds
        OffsetDateTime odt = OffsetDateTime.of(2024, 3, 2, 17, 13, 7, 0, ZoneOffset.UTC);

        // Print it in the default format
        System.out.println(odt);

        // ######### Formatted output #########
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
        System.out.println(odt.format(formatter));
    }
}

输出

2024-03-02T17:13:07Z
2024-03-02T17:13:07.000

在线演示


Trail:日期时间了解有关现代日期时间 API 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.