将UTC时间转换为LocalTime

时间:2017-03-30 17:13:43

标签: jodatime 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&s以及我自己和方法来处理偏移部分,但我无法获得所需的输出。什么是最好的方法。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    return true
}

这会根据您的默认时区将其转换为您当地的时间(执行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"));