我从外部系统收到一个DateTime对象
我收到了2012-06-20T13:30:00+05:30
这样的日期。
外部系统使用Joda-Time API创建了日期。
我无法找到相应的日期格式。
此外,我想将时间转换为09:00:00+01:30
(不同的时区)。
答案 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。