【问题标题】:convert date format to diffrent date format like edm将日期格式转换为不同的日期格式,如 edm
【发布时间】:2013-06-21 07:39:24
【问题描述】:

我有字段类型 java.util.date 并从中获取 to.string() 的值 Sat Sep 14 00:00:00 IDT 2013 但我需要以不同的格式获取它,即 EDM 格式 像 2013-09-12T14:00 。 有简单的方法吗?

谢谢!

【问题讨论】:

  • 简单方式 - SimpleDateFormat.
  • 如何?我从对象中获取它并将其转换为 Date ,我应该如何使用简单的日期格式?
  • @JeanTennie 你们能告诉我如何使用 javascript 做同样的事情吗?

标签: java date datetime edmx datetimeoffset


【解决方案1】:

使用SimpleDateFormathere 提供了一个很好的教程)。考虑这个例子:

Date date = new Date();
System.out.println(date);

哪个输出:

2013 年 6 月 24 日星期一 21:46:22 BST

要转换为 EDM 格式,请执行以下操作:

String firstPartOfPattern = "yyyy-MM-dd";
String secondPartOfPattern = "HH:mm:ss";
SimpleDateFormat sdf1 = new SimpleDateFormat(firstPartOfPattern);
SimpleDateFormat sdf2 = new SimpleDateFormat(secondPartOfPattern);
String formattedDate = sdf1.format(date) + "T" + sdf2.format(date);

formattedDate 现在具有以下格式:

2013-06-24T21:46:22

【讨论】:

  • 这个答案使用了过时的麻烦的旧日期时间类,这些类现在是遗留的,被 java.time 类所取代。
【解决方案2】:

编辑:如前所述,您不应在 Java 8+ 中再使用 SimpleDateFormat

您还可以简化 Sam 描述的步骤:

String pattern = "yyyy-MM-dd'T'HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String formattedDate = sdf.format(date);

【讨论】:

  • 这个答案使用了过时的麻烦的旧日期时间类,这些类现在是遗留的,被 java.time 类所取代。
【解决方案3】:

tl;博士

myUtilDate.toInstant().toString()

2017-01-23T01:23:45.123Z

ISO 8601

ISO 8601 标准中定义了您所需的格式。

java.time 类在解析或生成字符串时默认使用 ISO 8601 格式。

java.time

避免使用过时麻烦的旧日期时间类,例如 Date,它们现在已被 java.time 类取代。

使用添加到旧类的新方法将您的 Date 对象转换为 java.time。 Date 的现代对应物是 Instant 在 UTC 时间轴上的片刻,但分辨率更精细,为纳秒而不是毫秒。

Instant instant = myUtilDate.toInstant() ;

要生成 ISO 8601 字符串,只需调用 toString。末尾的ZZulu 的缩写,表示UTC。

String output = instant.toString() ;

【讨论】:

  • 我使用了DateTimeFormatter.ISO_OFFSET_DATE_TIME 格式化程序,因为我想指定时区。
  • @coffeemakr 很好。您还可以通过调用instant.atOffset 来分配偏移量以生成OffsetDateTime 对象。通常最好分配一个时区ZoneId 以获得ZonedDateTime 对象。区域是特定区域的人们使用的偏移量的过去、现在和未来变化的集合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2018-02-12
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多