2017-01-02 55 views
0

2017-01-02T01:41:24Z是我的实际日期格式,我想将此日期格式转换为yyyy-MM-dd hh:mma格式。可解析日期:“2017-01-02T01:41:24Z”(在偏移量10)

请参见下面的代码我试过到目前为止,

String newsDate = "2017-01-02T01:41:24Z"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 
     Date date = null; 
     try 
     { 
      date = sdf.parse(newsDate); 
     } 
     catch (ParseException e) 
     { 
      e.printStackTrace(); 
     } 

date = sdf.parse(newsDate);行,我发现了以下错误:

"Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)".

请指引我,哪里可以我已经错了?

回答

2

因为您使用的日期格式不正确。

更改此

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

这个

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
+0

仍然错,请参阅我的答案。 –

1

试试这个:

String newsDate = "2017-01-02T01:41:24Z";  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

    try { 
     texview.setText(sdf1.format(sdf.parse(newsDate))); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      System.out.println("bad pattern"); 
     } 
0

其他的答案是错误的相对于时区/抵消 - 解读。尾部的“Z”表示UTC + 00:00,不能像文字一样解释。 documentation of Android定义了可以处理这种输入的合适的图案符号X.如果你不关心这个细节,那么你将不会得到一个例外,但错误的数据(这更糟糕)。

因此,包括固定的小时部分的最终解决方案是这样的:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); 

注意:使用XX,而不是XXX,如果您有没有冒号偏移。

1

这对我来说非常合适。

String newsDate = "2017-01-02T01:41:24Z";  
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma"); 

try { 
    texview.setText(sdf1.format(sdf.parse(newsDate))); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
     System.out.println("bad pattern"); 
    }