如何在Date对象中解析此日期字符串 2013-03-13T20:59:31 + 0000 ?
我尝试过这种方式,但是不行。
DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD");
Date result = df.parse(time);
答案 0 :(得分:30)
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
年份是小写y。
输入中与日期无关的任何字符(如2013-03-13T20:59:31+0000
中的“T”都应在''
中引用。
有关已定义模式字母的列表,请参阅documentation
解析检查给定日期是否为您指定的格式。 要在检查后以特定格式打印日期,请参阅以下内容:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Date result;
try {
result = df.parse("2013-03-13T20:59:31+0000");
System.out.println("date:"+result); //prints date in current locale
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdf.format(result)); //prints date in the format sdf
}
答案 1 :(得分:28)
尝试:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
检查http://developer.android.com/reference/java/text/SimpleDateFormat.html
具体:
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
答案 2 :(得分:3)
请试试这个:
SimpleDateFormat formatDate;
formatDate= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
答案 3 :(得分:1)
感谢所有试图帮助我的人......(+1)为所有人.......
这有效:"yyyy-MM-dd'T'HH:mm:ss"
答案 4 :(得分:0)
对于 2017-02-08 06:23:35 +0000 这种日期格式,我使用以下格式:
SimpleDateFormat formatDate;
formatDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZ");
它为我工作。其他答案对我不起作用。
答案 5 :(得分:0)
ZonedDateTime.parse("2020-05-08T11:12:13+0001", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"))