【问题标题】:Convert String date to ISO date format "2019-07-01T03:50:00.000Z" in Java [duplicate]在Java中将字符串日期转换为ISO日期格式“2019-07-01T03:50:00.000Z”[重复]
【发布时间】:2019-11-10 23:34:19
【问题描述】:

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

【问题讨论】:

  • 你试过什么? SO 不是编码服务,如果没有自己的一些代码,问题将在几分钟内关闭
  • 这似乎没有得到很好的研究?以Convert Date to ISO 8601 String in Java 为例。
  • 在大多数情况下,您不应该将一种格式的日期时间字符串转换为另一种格式。相反,在您的程序中,您应该将日期和时间保存在适当的日期时间对象中,例如ZonedDateTimeInstant。只有当您需要给出一个字符串时,才将您的日期和时间格式化为一个。

标签: java spring datetime time jodatime


【解决方案1】:

更新:使用 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

【讨论】:

  • 好...继续努力☺
猜你喜欢
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多