想要根据特定时区确定转换时间

时间:2014-07-03 06:53:13

标签: java datetime timezone jodatime

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

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

1 个答案:

答案 0 :(得分:1)

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

正偏移意味着"在UTC"之前,向东。否定意味着"在UTC"之后,向西。在您的示例中,+05:30是现代India time

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

Joda-Time库和java.time package中的新Java 8广泛使用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