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

时间:2016-01-06 09:42:27

标签: 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对象?

1 个答案:

答案 0 :(得分:6)

您的值没有毫秒组件,因此您需要ISODateTimeFormat.dateTimeNoMillis()

  

返回一个格式化程序,它结合了一个完整的日期和时间,没有毫秒,由一个' T' (YYYY-MM-DD' T' HH:MM:ssZZ)。

dateTime()方法返回格式为var User = keystone.list('User').model; var user = new User({ name: { first:'Abcd', last:'xyz' }, email: 'abc@xyz.com', password: 'password', isAdmin: true }); user.save(function (err) { if (err) { // handle error return console.log(err); } // user has been saved console.log(user); }); 的格式化程序,您的字符串不符合该格式。