【问题标题】:Unparseable date: "2017-01-02T01:41:24Z" (at offset 10)无法解析的日期:“2017-01-02T01:41:24Z”(偏移量 10)
【发布时间】:2017-01-02 07:44:53
【问题描述】:

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)”。

请指导我,我哪里出错了?

【问题讨论】:

    标签: android date simpledateformat unparseable


    【解决方案1】:

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

    改变这个

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

    到这里

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

    【讨论】:

      【解决方案2】:

      试试这个:

         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");
              }
      

      【讨论】:

        【解决方案3】:

        这对我来说非常有效。

         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");
            }
        

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-07
            • 1970-01-01
            • 2018-01-08
            • 1970-01-01
            相关资源
            最近更新 更多