2

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

4 回答 4

5

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

改变这个

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

对此

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
于 2017-01-02T07:46:30.147 回答
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");
        }
于 2017-01-02T07:57:10.560 回答
1

这对我来说非常有效。

 String dateNew= "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(dateNew)));
    } catch (ParseException e) {
      e.printStackTrace();
      System.out.println("bad pattern");
    }
于 2018-02-04T17:17:47.870 回答
0

关于时区/偏移量的其他答案是错误的 - 解释。结尾的“Z”表示 UTC+00:00,不能解释为文字。Android的文档定义了可以处理这种输入的合适的模式符号 X。如果您不关心这个细节,那么您将不会得到异常而是错误的数据(更糟)。

因此,包括小时部分修复在内的最终解决方案如下所示:

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

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

于 2017-01-02T11:04:18.490 回答