2

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

谢谢!

4

3 回答 3

2

使用(这里SimpleDateFormat有一个很好的教程)。考虑这个例子:

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

于 2013-06-24T20:57:47.677 回答
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。现代的对应物DateInstantUTC 时间线上的片刻,但具有更精细的纳秒而不是毫秒的分辨率。

Instant instant = myUtilDate.toInstant() ;

要生成 ISO 8601 字符串,只需调用toString. 结尾是 UTC的Z缩写Zulu,意思是 UTC。

String output = instant.toString() ;
于 2017-10-22T14:31:13.097 回答
1

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

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

String pattern = "yyyy-MM-dd'T'HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String formattedDate = sdf.format(date);
于 2017-10-22T13:10:17.200 回答