2019-06-17T20:27:23.706000000Z的日期格式是什么?

14 浏览
0 Comments

2019-06-17T20:27:23.706000000Z的日期格式是什么?

2019-06-17T20:27:23.706000000Z的日期格式是什么?

我需要以这种日期格式进行解析和转换为Java Date。

我尝试了以下代码:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

但是,它给出了错误的结果。

0
0 Comments

2019-06-17T20:27:23.706000000Z 这个时间格式在 Java 中无法直接解析,因为时间格式中的毫秒部分超过了三位数。为了解决这个问题,可以使用以下几种方法:

方法一:使用 SimpleDateFormat 类

import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
        try {
            Date date = sdf.parse("2019-06-17T20:27:23.706Z");
            System.out.println(date);
        } catch (Exception pe) {
            System.out.println(pe);
        }
    }
}

输出结果为:Mon Jun 17 20:27:23 UTC 2019。

方法二:使用 SimpleDateFormat 类,并指定毫秒的位数

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'");

输出结果与方法一相同。

方法三:使用 java.time 包中的 Instant 类

import java.time.Instant;
import java.util.Date;
String value = "2019-06-17T20:27:23.706000000Z";
Instant instant = Instant.parse(value);
Date date = Date.from(instant);

这种方法可以直接将字符串解析为 Date 对象,无需手动指定时间格式。

需要注意的是,SimpleDateFormat 类只能解析三位数的毫秒部分,超过三位数的部分会被忽略或导致解析错误。因此,在处理时间格式时,应当注意限制毫秒部分的位数。

0