将字符串解析为 'yyyy-mm-ddThh:mm:ss.SSSZ' ISODate java
parse String to 'yyyy-mm-ddThh:mm:ss.SSSZ' ISODate java
如何使用 SimpleDateFormat 将 String 转换为 ISODate 格式,这意味着我想最终获得 java.util.Date 中的日期格式。
我的字符串看起来像 2017-02-17T09:28:03.000Z,我想将其转换为日期格式。我可以用 Joda 日期格式执行此操作,但由于我使用的是 mongoDB,它不接受 joda 格式。
String startDateString1 = "2017-02-17T04:23:17.452Z";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date startDate = df.parse(startDateString1);
String newDateString = df.format(startDate);
以上代码无效。
您可以使用 javax.xml.bind.DatatypeConverter.parseDateTime("2017-02-17T04:23:17.452Z")
,这将 return 日历对象。您可以对其调用 getTime()
以获取 Date 对象。
您的代码无效,因为 Z 是用于解释 RFC-822 时区的保留字符:
RFC 822 time zone: For formatting, the RFC 822 4-digit time zone format is used:
RFC822TimeZone:
Sign TwoDigitHours Minutes
TwoDigitHours:
Digit Digit
从 Java 7 开始,您可以使用 X 来解释 ISO-8601 时区 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html。以下作品:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
但是,在我的电脑上,
System.out.println(newDateString);
产生以下输出:
2017-02-17T05:23:17.452+01
或者,如果您确定只有 UTC 日期,您可以使用单引号转义 Z 字母:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
这是显示的结果:
2017-02-17T04:23:17.452Z
您可以在 Java 8 中完成,如下所示。
Instant instant = Instant.parse("2017-02-17T09:28:03.000Z");
Date date = Date.from(instant);
如何使用 SimpleDateFormat 将 String 转换为 ISODate 格式,这意味着我想最终获得 java.util.Date 中的日期格式。
我的字符串看起来像 2017-02-17T09:28:03.000Z,我想将其转换为日期格式。我可以用 Joda 日期格式执行此操作,但由于我使用的是 mongoDB,它不接受 joda 格式。
String startDateString1 = "2017-02-17T04:23:17.452Z";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date startDate = df.parse(startDateString1);
String newDateString = df.format(startDate);
以上代码无效。
您可以使用 javax.xml.bind.DatatypeConverter.parseDateTime("2017-02-17T04:23:17.452Z")
,这将 return 日历对象。您可以对其调用 getTime()
以获取 Date 对象。
您的代码无效,因为 Z 是用于解释 RFC-822 时区的保留字符:
RFC 822 time zone: For formatting, the RFC 822 4-digit time zone format is used:
RFC822TimeZone: Sign TwoDigitHours Minutes TwoDigitHours: Digit Digit
从 Java 7 开始,您可以使用 X 来解释 ISO-8601 时区 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html。以下作品:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
但是,在我的电脑上,
System.out.println(newDateString);
产生以下输出:
2017-02-17T05:23:17.452+01
或者,如果您确定只有 UTC 日期,您可以使用单引号转义 Z 字母:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
这是显示的结果:
2017-02-17T04:23:17.452Z
您可以在 Java 8 中完成,如下所示。
Instant instant = Instant.parse("2017-02-17T09:28:03.000Z");
Date date = Date.from(instant);