无法解释的日期:" 2017-01-02T01:41:24Z" (抵消10)

时间:2017-01-02 07:44:54

标签: android date simpledateformat unparseable

2017-01-02T01:41:24Z是我的实际日期格式,我想以yyyy-MM-dd hh:mma格式转换此日期。

请参阅我目前尝试的以下代码,

  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);行,我收到以下错误:

  

"无法解析日期:" 2017-01-02T01:41:24Z" (在抵消10)"。

请指导我,哪里可能出错?

4 个答案:

答案 0 :(得分:4)

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

更改此

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

到这个

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

答案 1 :(得分: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");
        }

答案 2 :(得分:1)

这对我来说很有效。

Route::post('/post/homepage', 'AdminController@HomePage');

答案 3 :(得分:0)

关于时区/偏移的其他答案是错误的 - 解释。尾随" Z"表示UTC + 00:00,不得解释为文字。 documentation of Android定义了可以处理这种输入的合适模式符号X.如果你不关心这个细节那么你就不会得到例外而是错误的数据(更糟糕的是)。

所以包括小时部分修复的最终解决方案如下:

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

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