在 Java 中将字符串日期转换为 ISO 日期格式“2019-07-01T03:50:00.000Z”

Convert String date to ISO date format "2019-07-01T03:50:00.000Z" in Java

如何将字符串类型的日期“Mon Jul 01 08:00:00 IST 2019”转换为 ISODate“2019-07-01T03:00:00.000Z”?

更新:使用 DateTimeFormat,在 java 8 中介绍:

想法是定义两种格式:一种用于输入格式,一种用于输出格式。用输入格式化器解析,然后用输出格式化器格式化。

除了尾部 Z,您的输入格式看起来很标准。无论如何,让我们处理这个:"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"。尾随 Z 是有趣的部分。通常这里有时区数据,比如-0700。所以模式将是 ...Z, 即没有撇号。

输出格式更简单:"dd-MM-yyyy"。注意小y-s.

示例代码如下:

DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse("2018-04-10T04:00:00.000Z", inputFormatter);
String formattedDate = outputFormatter.format(date);
System.out.println(formattedDate); // prints 10-04-2018

原始答案 - 旧 API SimpleDateFormat

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = inputFormat.parse("2018-04-10T04:00:00.000Z");
String formattedDate = outputFormat.format(date);
System.out.println(formattedDate); // prints 10-04-2018