繁体   English   中英

如何使用Joda-Time将其他时区的字符串转换为UTC

[英]How do I convert a String in a different timezone to UTC using Joda-Time

我设法将另一个时区中的有效日期字符串转换为UTC ,如下所示。

String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter DATETIME_FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT);
DateTimeZone dateTimeZone = DateTimeZone.forID("-03:00");
//date is 2000-01-01 00:00:00 -03:00
DateTime date =    DATETIME_FORMATTER.withZone(dateTimeZone).parseDateTime("2000-01-01 00:00:00"));
System.out.println("Current date is: " + date.toString());
//now convert to UTC
DateTime convertedDate = date.toDateTime(DateTimeZone.UTC);
System.out.println("Converted date: " + date.toString());

结果是

Current date is: 2000-01-01T00:00:00.000-03:00
Converted date: 2000-01-01T03:00:00.000Z

有更短/更好的方法吗? 我希望最终日期是Joda-Time DateTime对象。

您的示例代码的一项改进可能是用时区名称替换硬编码的“ -3:00”偏移量。 这将使Joda-Time可以针对任何可能的夏令时 (DST)进行调整。 请参阅doc中的DateTimeZone.forID()

这个:

DateTimeZone dateTimeZone = DateTimeZone.forID("America/Sao_Paulo");

代替这个:

DateTimeZone dateTimeZone = DateTimeZone.forID("-03:00");

时区列表(可能已过时,请阅读注释):
http://joda-time.sourceforge.net/timezones.html

您可以使用withZone()转换任何DateTime的时区。 如果输入字符串未指定时区偏移量,则必须在执行操作时将其添加,因此您的代码相当理想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM