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"
任何想法都错了吗?
您没有使用有效的模式.你的模式说它正在寻找HH:mm,你真正的字符串要复杂得多.查看DateTimeFormat文档.看起来你想要这样的东西:"yyyy-mm-dd'T'HH:mm:ss.SSS'Z'"
只需设置正确的模式: "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)
请参阅此处的文档