获取swift特定日期和时间的UTC时间?

时间:2016-12-26 04:33:12

标签: ios swift xcode datetime utc

Helllo all,

我有一个特定的日期&从iOS中的datepicker中选择的时间。我想转换这个日期&到UTC时间的时间。我已经使用了以下功能。

func get_Date_time_from_UTC_time(string : String) -> String {

    let dateformattor = DateFormatter()
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateformattor.timeZone = NSTimeZone.init(abbreviation: "UTC") as TimeZone!
    let dt = string
    let dt1 = dateformattor.date(from: dt as String)
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
    dateformattor.timeZone = NSTimeZone.local
    return dateformattor.string(from: dt1!)
  }

我的位置在印度。因此,当我像2016-12-26 09:53:45那样通过时间时,它会将UTC时间作为2016-12-26 15:23:00 +0530。现在,当我在谷歌搜索UTC时间时,它显示我的时间为4:32 AM 26 december。请告诉我为什么会有这样的差异&安培;我做得对吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下代码: 因为根据我的理解,您应首先提供您当地的时区,将您的日期转换为本地,然后它将转换为UTC:

func get_Date_time_from_UTC_time(string : String) -> String {

    let dateformattor = DateFormatter()
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateformattor.timeZone = NSTimeZone.local
    let dt = string
    let dt1 = dateformattor.date(from: dt as String)
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
    dateformattor.timeZone = NSTimeZone.init(abbreviation: "UTC") as TimeZone!
    return dateformattor.string(from: dt1!)
  }

我更换了timeZone code.Check并告诉我,如果没有解决

答案 1 :(得分:1)

这是因为您将参数中传递的日期视为UTC时区,并要求将其转换为本地时区。相反,你的意思恰恰相反。

func get_Date_time_from_UTC_time(string : String) -> String {

    let dateformattor = DateFormatter()
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateformattor.timeZone = NSTimeZone.local
    let dt = string
    let dt1 = dateformattor.date(from: dt as String)
    dateformattor.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
    dateformattor.timeZone = NSTimeZone.init(abbreviation: "UTC") as TimeZone!
    return dateformattor.string(from: dt1!)
}