我试图获取日期格式2016-08-29T09:15:17Z
,但最后无法获得结尾Z
。
我还检查了官方网站上的日期时间文档,但找不到类似的模式。到目前为止,我创建的日期格式如下:
YYYY-MM-DD' T' HH:MM:ss.SSSZ
到目前为止,我编写的代码是:
public static void main(String args[]) throws ParseException{
Date nDate=new Date();
//SimpleDateFormat format=new SimpleDateFormat("ddMMYYYYHHMMSS");
String date=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(nDate);
System.out.println(date);
}
答案 0 :(得分:0)
T只是将日期与时间分开的文字,Z表示"零小时偏移"也被称为"祖鲁时间" (世界标准时间)。如果你的字符串总是有一个" Z"你可以使用 -
TimeZone timeZone = TimeZone.getTimeZone("UTC"); // optional
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); // Quoted "Z" to indicate UTC, no timezone offset
dateFormat.setTimeZone(timeZone); // optional
String date = dateFormat .format(new Date()); // date will have the required format
System.out.println(date);
答案 1 :(得分:0)
Z
是一个常量值,如字符串中的T
,因此您必须在其周围加上单引号:
String date=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").format(nDate);
如果您使用Z
而没有单引号,则DateFormat需要时区值
答案 2 :(得分:0)
Oracle文档说明[0,2]
和z
都用于时区。
因此,如果您不想要Z
的特殊含义,那么您需要编写如下:
Z
答案 3 :(得分:0)
我正在使用从JDK 8开始引入的新java.time API添加另一种方法。
LocalDateTime nDate=LocalDateTime.now();
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.appendLiteral('T')
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.appendLiteral('Z')
.toFormatter();
String date = formatter.format(nDate);
System.out.println(date);