android - JodaTime - 如何将 ISO 8601 时间字符串解析为 DateTime?

标签 android datetime jodatime iso datetime-parsing

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

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 对象?

最佳答案

您的值没有毫秒分量,因此您需要 ISODateTimeFormat.dateTimeNoMillis() :

Returns a formatter that combines a full date and time without millis, separated by a 'T' (yyyy-MM-dd'T'HH:mm:ssZZ).

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

关于android - JodaTime - 如何将 ISO 8601 时间字符串解析为 DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34629879/

相关文章:

javascript - 为什么将参数传递给 new Date() 会导致与不传递任何参数时不同的时区?

java - 如何获取 DateTime 对象的特定部分?

java - 在 DateTimeZone.convertLocalToUTC 时区仍然显示本地

java-8 - 从 Joda 时间库迁移到 Java 时间(Java 8)

java - 如何从我的 Android 应用程序调用默认电子邮件应用程序

android - 在 Android 上为 imageView 渲染圆角

c# - 值(value)随时间呈指数衰减

javascript - moment() 获取今天的午夜日期

java - 填充微调器时 dataAdapter 显示为 null 但它包含值

javascript - 如何使用钩子(Hook)将值发送到 React Native 中的另一个屏幕?