Java JodaTime字符串yyyy mm ddThh:mmss.Z到日期时间
您好,我正在使用Joda time将字符串日期转换为DateTime对象 我当前有以下字符串:Java JodaTime字符串yyyy mm ddThh:mmss.Z到日期时间,java,datetime,jodatime,Java,Datetime,Jodatime,您好,我正在使用Joda time将字符串日期转换为DateTime对象 我当前有以下字符串: 2014-02-16T00:17:20.000Z 如何将其转换为DateTime对象 我试过: DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZZ"); DateTime dt = formatter.parseDateTime("2014-02-16T00:17:20.0
2014-02-16T00:17:20.000Z
如何将其转换为DateTime对象
我试过:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZZ");
DateTime dt = formatter.parseDateTime("2014-02-16T00:17:20.000Z");
但我得到了以下错误:
java.lang.IllegalArgumentException: Invalid format: "2014-02-16T00:17:20.000Z" is malformed at ".000Z"
非常感谢您的帮助此格式恰好是默认情况下DateTime使用的ISO日期时间格式。你只需要
DateTime d = DateTime.parse(s);
或
对于未来的访客,更简单的解决方案:
String date = "2014-02-16T00:17:20.000Z";
DateTime dateTime = new DateTime(date);
可能的问题是你们在caps中使用Z(区域) 我已经测试了下面的代码运行良好
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.ENGLISH);
Date date =formatter.parse("2016-09-06T08:35:02.530GMT");
DateTime d = new DateTime(date.getTime());
您的字符串有一些毫秒;但是你的格式不包括毫秒。@DavidWallace我以为它只是在模式中使用的。谢谢。看起来它应该是
DateTimeFormat.forPattern(“yyyy-MM-dd'T'HH:MM:ss.SSSZ”)
@Reimeus-这似乎抛弃了时区。我想你不想在Z周围加上单引号。@DavidWallace编辑过…:)我看不出这有什么帮助。需要一个模式,而评论中提供的模式不起作用。这有什么帮助?问题是关于DateTimeFormat的。@DezUdezue问题是如何将特定格式的字符串转换为DateTime对象。
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.ENGLISH);
Date date =formatter.parse("2016-09-06T08:35:02.530GMT");
DateTime d = new DateTime(date.getTime());