[英]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
您的示例代码的一项改进可能是用时区名称替换硬编码的“ -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.