将具有偏移量的 UTC 时间转换为 LocalTime
Convert UTC Time with offset to LocalTime
我用的是joda 2.7,我想转换
UTC Time= 09:30:10-06:00
to Local Time= 03:30:10
and
UTC Time=10:45:00+07:30
to Local Time = 18:15:00
我尝试了 joda 和我自己的不同格式以及处理偏移部分的方法,但我无法获得所需的输出。什么是最好的方法。
你可以这样做:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ");
String utcTime = "09:30:10-06:00";
DateTime localTime = fmt.parseDateTime(utcTime);
String localTimeString = localTime.toString("HH:mm:ss");
这将根据您的默认时区将其转换为您的当地时间(执行 System.out.println(DateTimeZone.getDefault())
检查您的默认时区)。
如果你想转换到不同的时区,你需要做这样的事情:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ").withZone(/*DateTimeZone you want*/);
在您的特定情况下,要获得您想要的输出,您只需要使用您拥有所需输出的时区:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ").withZone(DateTimeZone.forOffsetHours(-12));
String utcTime = "09:30:10-06:00";
DateTime localTime = fmt.parseDateTime(utcTime);
System.out.println(localTime.toString("HH:mm:ss"));
utcTime = "10:45:00+07:30";
localTime = fmt.withZone(DateTimeZone.forOffsetHours(15)).parseDateTime(utcTime);
System.out.println(localTime.toString("HH:mm:ss"));
输出为:
03:30:10
18:15:00
我用的是joda 2.7,我想转换
UTC Time= 09:30:10-06:00
to Local Time= 03:30:10
and
UTC Time=10:45:00+07:30
to Local Time = 18:15:00
我尝试了 joda 和我自己的不同格式以及处理偏移部分的方法,但我无法获得所需的输出。什么是最好的方法。
你可以这样做:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ");
String utcTime = "09:30:10-06:00";
DateTime localTime = fmt.parseDateTime(utcTime);
String localTimeString = localTime.toString("HH:mm:ss");
这将根据您的默认时区将其转换为您的当地时间(执行 System.out.println(DateTimeZone.getDefault())
检查您的默认时区)。
如果你想转换到不同的时区,你需要做这样的事情:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ").withZone(/*DateTimeZone you want*/);
在您的特定情况下,要获得您想要的输出,您只需要使用您拥有所需输出的时区:
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH:mm:ssZ").withZone(DateTimeZone.forOffsetHours(-12));
String utcTime = "09:30:10-06:00";
DateTime localTime = fmt.parseDateTime(utcTime);
System.out.println(localTime.toString("HH:mm:ss"));
utcTime = "10:45:00+07:30";
localTime = fmt.withZone(DateTimeZone.forOffsetHours(15)).parseDateTime(utcTime);
System.out.println(localTime.toString("HH:mm:ss"));
输出为:
03:30:10
18:15:00