将日期格式转换为不同的日期格式,如edm

时间:2013-06-24 17:37:01

标签: java date datetime edmx datetimeoffset

我有字段类型java.util.date并从中获取to.string()的值 9月14日星期六00:00:00 IDT 2013但我需要以EDM格式的不同格式获取它 喜欢2013-09-12T14:00。 有简单的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

输出:

  

Mon Jun 24 21:46:22 BST 2013

要转换为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

答案 1 :(得分:1)

编辑:如上所述,您不应再使用Java 8 +中的SimpleDateFormat了!

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

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

答案 2 :(得分:1)

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的现代对应物在UTC的时间轴上有Instant一段时间,但分辨率更精确到纳秒而不是毫秒。

Instant instant = myUtilDate.toInstant() ;

要生成ISO 8601字符串,只需致电toString即可。最后ZZulu的缩写,表示UTC。

String output = instant.toString() ;