如何将字符串类型的日期“ Mon Jul 01 08:00:00 IST 2019
”转换为ISODate“ 2019-07-01T03:00:00.000Z
”?
答案 0 :(得分:3)
更新:使用Java 8中引入的DateTimeFormat:
想法是定义两种格式:一种用于输入格式,一种用于输出格式。使用输入格式化程序进行解析,然后使用输出格式化程序进行格式化。
您的输入格式看起来很标准,除了结尾的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