【问题标题】:Want to determine convert time as per specific time zone想要根据特定时区确定转换时间
【发布时间】:2014-08-24 04:11:00
【问题描述】:

我正在从外部系统接收一个 DateTime 对象。
我收到了一个类似2012-06-20T13:30:00+05:30 的日期。 外部系统使用Joda-Time API 创建了日期。

我无法为此找到相应的日期格式。 此外,我想将时间转换为09:00:00+01:30(不同时区)。

【问题讨论】:

  • 什么是201206 是什么? 20 是什么? 13 是什么? 30 是什么? 00 是什么?等等...?这就是您确定日期格式的方式。
  • 据我了解,您想在不同区域将 joda DateTime 转换为 java Date

标签: java datetime timezone jodatime


【解决方案1】:

该字符串表示日期、时间和与UTC 的偏移量。

正偏移表示“在 UTC 之前”,向东。负数表示“在 UTC 之后”,向西。在您的示例中,+05:30 是现代的 India time

此格式由 ISO 8601 标准正式定义。这个标准非常有用。请务必阅读the Wikipedia page

Joda-Time 库和 Java 8 中的新 java.time package 广泛使用 ISO 8601。该格式是解析和生成日期时间值的字符串表示形式的默认格式。

只需将该字符串传递给 DateTime 的构造函数。并将时区对象传递给构造函数。或者稍后调用withZone方法调整时区。

DateTimeZone timeZoneParis = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTimeParis = new DateTime( myIsoString, timeZoneParis );

我对您提到的偏移量 +01:30 感到困惑。我在list of time zones 中看不到这样的偏移量。在历史悠久的南非,这样的偏移量是 used for a decade

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多