【问题标题】:JodaTime - how to parse ISO 8601 time string into DateTime?JodaTime - 如何将 ISO 8601 时间字符串解析为 DateTime?
【发布时间】:2016-01-06 09:42:27
【问题描述】:

我有以下格式的时间字符串:

2016-01-07T08:00:00+00:00

当我尝试使用以下方法解析字符串时。

public static DateTime getDateTimeObject(String dateTime) {
        //DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(PATTERN);
        //DateTime dateTimeObj = dateTimeFormatter.parseDateTime(dateTime);
        Logger.d(dateTime);
        DateTime dateTimeObj = null;
        try {
            dateTimeObj = ISODateTimeFormat.dateTime().parseDateTime(dateTime);
            return dateTimeObj;
        } catch (Exception e) {
            Logger.e(e.getMessage());
        }
        return dateTimeObj;
    }

我总是遇到以下异常。

Invalid format: "2016-01-07T08:00:00+00:00" is malformed at "+00:00"

如何解析 ISO 格式的字符串以获取有效的 DateTime 对象?

【问题讨论】:

  • 你试过dateTimeObj = DateTime.parse(dateTime);吗?
  • 仅供参考,Joda-Time 项目处于维护模式。团队建议迁移到java.time 类,在本例中为OffsetDateTime。示例:OffsetDateTime.parse( "2016-01-07T08:00:00+00:00" )

标签: android datetime jodatime iso datetime-parsing


【解决方案1】:

你的值没有毫秒部分,所以你想要ISODateTimeFormat.dateTimeNoMillis()

返回一个格式化程序,它结合了完整的日期和时间,不带毫秒,用“T”分隔 (yyyy-MM-dd'T'HH:mm:ssZZ)。

dateTime() 方法返回格式为 yyyy-MM-dd'T'HH:mm:ss.SSSZZ 的格式化程序,但您的字符串不符合该格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 2021-01-17
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多