Java 将ISO8601字符串转换为日期时间格式?

Java 将ISO8601字符串转换为日期时间格式?,java,date,jodatime,Java,Date,Jodatime,我有一个字符串20130510T202132Z,我想将其转换为DateTime对象 我一直在试图用乔达来让它工作,但我无法让它工作。 我已经点击了我能找到的关于这个主题的每一个链接——并使用了格式化程序,但根本不起作用 做这件事的最佳方法是什么?Joda Time让这件事变得非常简单,因为它内置了对ISO格式的支持: DateTimeFormatter iso = ISODateTimeFormat.basicDateTimeNoMillis(); DateTime dateTime = iso

我有一个字符串
20130510T202132Z
,我想将其转换为
DateTime
对象

我一直在试图用乔达来让它工作,但我无法让它工作。 我已经点击了我能找到的关于这个主题的每一个链接——并使用了格式化程序,但根本不起作用


做这件事的最佳方法是什么?

Joda Time让这件事变得非常简单,因为它内置了对ISO格式的支持:

DateTimeFormatter iso = ISODateTimeFormat.basicDateTimeNoMillis();
DateTime dateTime = iso.parseDateTime(text);

Joda Time项目现在处于维护模式,团队建议迁移到java.Time类

DateTimeFormatter
不幸的是,这个标准格式的“基本”(最小分隔符)版本在java.time中并没有从Java8开始预定义。使用类指定匹配的模式

String input = "20130510T202132Z";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "uuuuMMdd'T'HHmmssX" );
顺便说一句,带有分隔符(如
2013-05-10T20:21:32Z
)的版本称为

OffsetDateTime
作为对象解析。这个类表示时间线上的一个时刻,调整到某个特定值,分辨率为纳秒。在这种情况下,偏移量为其自身

odt.toString():
2013-05-10T20:21:32Z


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • 后来
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门针对Android采用了Three Ten Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里找到一些有用的类,例如、、和。

将来,如果您尝试过一些东西,那么有必要展示您尝试过的内容,并解释它是如何不适合您的。仅供参考,这种使用最少分隔符的格式称为。“扩展”格式使用分隔符,如
2013-05-10T20:21:32Z
OffsetDateTime odt = OffsetDateTime.parse ( input , f );