如何解析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;
}
但是,结果是错误:
java.text.ParseException:无法解析的日期: " 2014-04-25T01:50:00.000-06:00"
答案 0 :(得分:0)
尝试以这种方式定义格式:
DateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
答案 1 :(得分:0)
如果你使用旧的JDK - SimpleDateFormat
试试这个Java7模式:
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
原因在javadoc:
中ThreeLetterISO8601TimeZone: 签署TwoDigitHours:分钟
如果您使用JodaTime,则不应使用SimpleDateFormat
而应使用Joda-solution,否则您将只会以混乱的方式混合使用JDK和Joda类型:
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
更新,因为您对Jespers回答的评论
如果您只想将DateTime
转换为java.util.Date
,那么这既不是格式也不是解析问题。解决方案更简单。只需使用toDate():
DateTime dt = ...;
java.util.Date jdkDate = dt.toDate();
答案 2 :(得分:0)
该标准的ISO 8601格式。如果你正在使用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();