我有字段类型 java.util.date 并从中获取 to.string() Sat Sep 14 00:00:00 IDT 2013 的值,但我需要以不同的格式获取它,即 EDM 格式,如 2013-09- 12T14:00。有简单的方法吗?
谢谢!
我有字段类型 java.util.date 并从中获取 to.string() Sat Sep 14 00:00:00 IDT 2013 的值,但我需要以不同的格式获取它,即 EDM 格式,如 2013-09- 12T14:00。有简单的方法吗?
谢谢!
使用(这里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
myUtilDate.toInstant().toString()
2017-01-23T01:23:45.123Z
您所需的格式在ISO 8601标准中定义。
java.time 类在解析或生成字符串时默认使用 ISO 8601 格式。
避免使用过时的麻烦的旧日期时间类,例如Date
现在遗留的,被 java.time 类取代的类。
Date
使用添加到旧类的新方法将您的对象转换为 java.time。现代的对应物Date
是Instant
UTC 时间线上的片刻,但具有更精细的纳秒而不是毫秒的分辨率。
Instant instant = myUtilDate.toInstant() ;
要生成 ISO 8601 字符串,只需调用toString
. 结尾是 UTC的Z
缩写Zulu
,意思是 UTC。
String output = instant.toString() ;
编辑:如前所述,您不应SimpleDateFormat
再在 Java 8+ 中使用!
您还可以简化 Sam 描述的步骤:
String pattern = "yyyy-MM-dd'T'HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String formattedDate = sdf.format(date);