【问题标题】:How to Convert UTC time to local time In Swift 3?如何在 Swift 3 中将 UTC 时间转换为本地时间?
【发布时间】:2018-03-07 04:50:15
【问题描述】:

在这里,我想将 UTC 时间转换为 swift 3 中的本地时间格式,但我无法转换它。请帮我解决这个问题

let StrDate = "2018-03-06T13:32:57 +05:30"我想将此日期转换为本地时间格式。

 func convertStringDateFormateUTC(strDate: String,
     strCurrentFormateType:String, strFormateType:String) -> String {
            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = strCurrentFormateType
            var strNewdate = NSDate()
            strNewdate = dateFormatter.date(from: strDate)! as NSDate
            dateFormatter.dateFormat = strFormateType;
            dateFormatter.timeZone = TimeZone.init(abbreviation: "UTC")
            return dateFormatter.string(from: strNewdate as Date)
        }

【问题讨论】:

标签: swift


【解决方案1】:

使用TimeZone.current 检测本地时区并应用它。

let formatter = DateFormatter()
// initially set the format based on your datepicker date
var localTimeZoneAbbreviation: String { return TimeZone.current.abbreviation() ?? "UTC" }
//print(localTimeZoneAbbreviation)
formatter.locale = Locale.init(identifier: localTimeZoneAbbreviation)
// convert your string to date
let yourDate = formatter.date(from: strDate)
//then again set the date format which type of output you need

在你的功能中:

func convertStringDateFormateUTC(strDate: String,
                                 strCurrentFormateType:String, strFormateType:String) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = strCurrentFormateType

    var localTimeZoneAbbreviation: String { return TimeZone.current.abbreviation() ?? "UTC" }
    dateFormatter.locale = Locale.init(identifier: localTimeZoneAbbreviation)

    var strNewdate = NSDate()
    strNewdate = dateFormatter.date(from: strDate)! as NSDate
    dateFormatter.dateFormat = strFormateType;
    dateFormatter.timeZone = TimeZone.init(abbreviation: "UTC")
    return dateFormatter.string(from: strNewdate as Date)
}

【讨论】:

  • 当我计算时间时,它显示它显示额外的 1 小时。 6:00:00 +5:30 UTC 时间然后我得到 12:30 但我想我得到 11:30 。对不对?
  • 没错。 6:00:00 +5:30 UTC 表示 12:30,因为在 UTC 中它增加了 +5:30 小时
猜你喜欢
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 2021-10-10
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多