使用Joda-Time获取会议记录

Upv*_*ote 1 java time android date jodatime

下面是zulu日期字符串:

2013-12-18T23:41:54.959Z
Run Code Online (Sandbox Code Playgroud)

我想将其转换为GMT并使用Joda-Time检索分钟.我构建以下方法:

public static int minutesFromDateString(final String s){
    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm").withZone(DateTimeZone.forID("Europe/Berlin"));
    DateTime dt = formatter.parseDateTime(s);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(dt.toDate());

    return calendar.get(Calendar.MINUTE);
}
Run Code Online (Sandbox Code Playgroud)

但是这会返回错误:

12-22 16:04:11.940:E/AndroidRuntime(6433):java.lang.IllegalArgumentException:格式无效:"2013-12-18T23:41:54.959Z"格式错误为"13-12-18T23:41:54.959 Z"

任何想法都错了吗?

Pea*_*oto 5

您没有使用有效的模式.你的模式说它正在寻找HH:mm,你真正的字符串要复杂得多.查看DateTimeFormat文档.看起来你想要这样的东西:"yyyy-mm-dd'T'HH:mm:ss.SSS'Z'"


Max*_*tin 5

只需设置正确的模式: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

在你的情况下:

public static int minutesFromDateString(final String s){        

        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").withZone(DateTimeZone.forID("Europe/Berlin"));
        DateTime dt = formatter.parseDateTime(s);

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dt.toDate());

        return calendar.get(Calendar.MINUTE);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

41
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档