我有字段类型java.util.date并从中获取to.string()的值 9月14日星期六00:00:00 IDT 2013但我需要以EDM格式的不同格式获取它 喜欢2013-09-12T14:00。 有简单的方法吗?
谢谢!
答案 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)
myUtilDate.toInstant().toString()
2017-01-23T01:23:45.123Z
您所需的格式在ISO 8601标准中定义。
在解析或生成字符串时,java.time类默认使用ISO 8601格式。
避免使用过时的麻烦旧的日期时间类,例如Date
,这些类现在是遗留的,被java.time类取代。
使用添加到旧类的新方法将Date
对象转换为java.time。 Date
的现代对应物在UTC的时间轴上有Instant
一段时间,但分辨率更精确到纳秒而不是毫秒。
Instant instant = myUtilDate.toInstant() ;
要生成ISO 8601字符串,只需致电toString
即可。最后Z
是Zulu
的缩写,表示UTC。
String output = instant.toString() ;