gpt4 book ai didi

java - 如何使用 Joda 包将 ISO 8601 日期时间转换为 Java 中的特定日期时间格式

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:59 24 4
gpt4 key购买 nike

我正在使用 org.joda.time.DateTime;用于将例如“2017-02-07T00:00:00.000+05:30”的 ISO 8601 日期时间转换为格式“yyyy-MM-dd HH:mm:ss.SSS”的包。

代码是:

String dateTimePattern = "yyyy-MM-dd HH:mm:ss.SSS";
DateTimeFormatter dtf = DateTimeFormat.forPattern(inputDateTimePattern);
DateTime jodatime = dtf.parseDateTime("2017-02-07T00:00:00.000+05:30");;
System.out.println("Converted datetime is: ",jodatime.toString(dtf))

但是我提到错误

java.lang.IllegalArgumentException: Invalid format: is malformed at ".T00:00:00.000+05:30"

如何在 java 中将 ISO 8601 日期时间格式转换为所需格式?

最佳答案

tl;dr

Joda-Time 被 java.time 类取代。

OffsetDateTime.parse( "2017-02-07T00:00:00.000+05:30" )

java.time

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

在 java.time 中,您的输入字符串可以直接解析为 OffsetDateTime目的。无需指定格式化模式。

OffsetDateTime odt = OffsetDateTime.parse( "2017-02-07T00:00:00.000+05:30" );

时区是特定区域偏移量的历史记录。因此,如果您确定预期的时区,那么使用总是更好。

ZoneId z = ZoneId.of( "Asia/Kolkata" );  // Or "America/Montreal", etc.
ZonedDateTime zdt = odt.atZoneSameInstant();

Joda Time

在 Joda-Time 中,您可以通过以下两种方式中的任何一种来解析标准 ISO 8601 格式的字符串以及与 UTC 的偏移量:

  • 构造函数
    new DateTime( "2017-02-07T00:00:00.000+05:30") ;
  • 静态解析方法
    DateTime.parse( "2017-02-07T00:00:00.000+05:30")

这两条路线相同!请参阅 parse 中的类文档方法:

However, when this method is passed a date-time string with an offset, the offset is directly parsed and stored. As such, DateTime.parse("2010-06-30T01:20+02:00") and new DateTime("2010-06-30T01:20+02:00")) are NOT equal. The object produced via this method has a zone of DateTimeZone.forOffsetHours(2). The object produced via the constructor has a zone of DateTimeZone.getDefault().

关于java - 如何使用 Joda 包将 ISO 8601 日期时间转换为 Java 中的特定日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com