如何将 2013-03-13T20:59:31+0000 日期字符串解析为日期

2022-09-01 14:50:19

如何解析此格式的日期字符串2013-03-13T20:59:31 + 0000到日期对象?

我正在尝试这种方式,但它不起作用。

DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD");
Date result =  df.parse(time);
                    

我从第一行得到这个例外:

java.lang.IllegalArgumentException: Illegal pattern character 'T'


答案 1

尝试:

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

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

年份为小写 y。输入中与日期无关的任何字符(如 中的“T”)都应在 中引用。2013-03-13T20:59:31+0000''

有关已定义模式字母的列表,请参阅文档

分析检查给定日期是否采用您指定的格式。要在检查后以特定格式打印日期,请参阅以下内容:

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
}

推荐