偏移 25 处无法解析的日期

Posted

技术标签:

【中文标题】偏移 25 处无法解析的日期【英文标题】:Unparseable date at offset 25 【发布时间】:2013-05-23 21:19:40 【问题描述】:

我无法解决此问题。我正在尝试将日期字符串 2013-05-23T19:00:00GMT-00 解析为 yyyy-MM-dd'T'HH:mm:ssz 的 StandardFormat,但我总是在第 25 位得到 ParseException。

    // Get a human readable format.
    DateFormat dateFormat = DateTime.getStandardFormat();

    // Subtract a full hour from the time passed in.
    final int HOUR_IN_MINUTES = 3600;
    DateTime dateTimeLess1Hour = aDateTime.minus(HOUR_IN_MINUTES, 0);

    // Convert the DateTime, less exactly one hour, to a string.
    String timeLess1String = dateFormat.format(DateTime.toDate(dateTimeLess1Hour));

    // Split the string to distinguish the time part
    String date = timeLess1String.substring(0, 10);
    String time = timeLess1String.substring(11);

    String[] hhMMss = time.split(":");

    String hourOnHourDate = date + "T" + hhMMss[0] + ":00:00" + hhMMss[2].substring(2);

    Date inDateFormat = null;

    // Convert the string into a Date object
    inDateFormat = dateFormat.parse(hourOnHourDate);

    // Convert the Date into a DateTime object.
    return new DateTime(inDateFormat);

错误消息显示无法解析日期:2013-05-23T19:00:00GMT-00

【问题讨论】:

尝试使用SimpleDateFormat,可能是DateTime有问题... GMT-00也应该是GMT-00:00 Dhrubajyoti,谢谢,我在字符串末尾添加了额外的 :00 并解决了错误。 【参考方案1】:

位置 25 表示 GMT 部分的开头,这是您尝试使用字母 z 解析的部分。如果您确定您的时区将始终为GMT,那么您可以将其作为固定字符串,如下所示:

yyyy-MM-dd'T'HH:mm:ss'GMT'

如果输入的时区有时会有所不同,则将其分开。

String zone = inputTime.substring(startPosition, endPosition);

并使用zone字符串在单独的行中设置时区

【讨论】:

以上是关于偏移 25 处无法解析的日期的主要内容,如果未能解决你的问题,请参考以下文章

Django:TemplateSyntaxError:无法解析剩余部分:'|'来自“资格日期|”

ParseException:无法解析日期 - 类:java.text.DateFormat

BigQuery 在解析时无法识别时区

错误代码:38 DB::Exception:无法解析日期:值太短:无法从字符串解析日期:执行“FUNCTION toDate()”时

googleapis / python-bigquery:BadRequest:无法解析为带有消息“无法解析”的日期

无法解析的日期:“20180 ......” Json 日期到 java