Java 带有偏移量的日期的DateTime ParseException
如何解析日期字符串,如2014-04-25T01:50:00.000-06:00?我正在使用Joda DateTime,并尝试了以下方法:Java 带有偏移量的日期的DateTime ParseException,java,date,datetime,Java,Date,Datetime,如何解析日期字符串,如2014-04-25T01:50:00.000-06:00?我正在使用Joda DateTime,并尝试了以下方法: public static String formatDate(Date d){ SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.00'0Z'"); String mdy = mdyFormat.format(d); return mdy
public static String formatDate(Date d){
SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.00'0Z'");
String mdy = mdyFormat.format(d);
return mdy;
}
但是,结果是一个错误:
java.text.ParseException:不可解析日期:
2014-04-25T01:50:00.000-06:00
请尝试以以下方式定义格式:
DateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
如果使用旧的JDK SimpleDataFormat,请尝试以下Java7模式:
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
原因如下:
三字母ISO8601时区:
签署两位数:分钟
如果使用JodaTime,则不应使用SimpleDataFormat,而应使用a,否则,您只能以令人困惑的方式混合使用JDK和Joda类型:
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
由于您对Jespers的评论而更新答案:
如果您只想将DateTime转换为java.util.Date,那么这既不是格式问题,也不是解析问题。解决方案要简单得多。只需使用:
这是标准的ISO8601格式。如果您使用的是Joda Time:
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeParser();
DateTime dateTime = fmt.parseDateTime("2014-04-25T01:50:00.000-06:00");
// Convert it to java.util.Date
Date date = dateTime.toDate();
Try:yyyy-MM-dd'T'HH:MM:ss.ssszey-Larme,我已经尝试过了,但它也不起作用。为什么你的问题是如何解析,而你的代码是关于格式化日期的?谢谢Jesper的建议,这对我以后会很有用。然而,我当前的问题是,我需要将DateTime转换为java.util.Date,当我尝试将值解析为Date时,会出现此异常;你只要打电话给托德就行了。我会更新我的答案。
DateTimeFormatter fmt = ISODateTimeFormat.dateTimeParser();
DateTime dateTime = fmt.parseDateTime("2014-04-25T01:50:00.000-06:00");
// Convert it to java.util.Date
Date date = dateTime.toDate();