Java JodaTime字符串yyyy mm ddThh:mmss.Z到日期时间

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

您好,我正在使用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.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());