UTC 日期到当前时区字符串和结果字符串日期到当前时区日期

UTC Date To Current TimeZone String and Result StringDate to Current TimeZone Date

我获取 UTC 格式的当前日期,并将其转换为本地时区,结果以字符串形式显示。

现在,我将该结果字符串日期转换为具有相同本地时区的日期,但它以 UTC 格式提供日期。

下面是我使用的代码:

    print("current date :\( Date())") //current date : 2017-03-08 11:11:12 +0000

    let dateFormatter = DateFormatter()
    dateFormatter.timeZone = TimeZone.current
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
    let localDate : String = dateFormatter.string(from: Date())

    print("localDate date :\(localDate)") // localDate date: 08-03-2017 16:41:12 +0530

    let dateFormatter1 = DateFormatter()
    dateFormatter1.timeZone = TimeZone.current
    dateFormatter1.dateFormat = "dd-MM-yyyy HH:mm:ss Z"
    let dateCurrent = dateFormatter1.date(from: localDate)!

    print("dateCurrent date :\(dateCurrent)") // dateCurrent date: 2017-03-08 11:11:12 +0000

当前日期

我想在

08-03-2017 16:41:12 +0530

只有日期类型,没有字符串类型。

我哪里做错了?

这就是 Date 对象的工作方式。您只需保留日期对象,直到需要将其输出给用户或 API,此时您可以将其转换为适当时区的字符串。

一个 Date 对象本质上只是用一些处理它的辅助方法包装了一个 unix 时间戳。

试试这个,希望对你有帮助

let date: String =  "dd-MM-yyyy HH:mm:ss Z"
    var dateArr = date.components(separatedBy: " ")
    let dateCurrent  = (dateArr [0] )
    print(dateCurrent)

您的 dateFormatter 有问题。这是我将 UTC 转换为本地和本地转换为 UTC 的代码:

    convertUTCtoLocal(strUTCDate: "09-03-2017 03:54:00")
    convertLocalToUTC(strUTCDate: "09-03-2017 09:24:00")

将 UTC 转换为本地

    func  convertUTCtoLocal(strUTCDate: String){
    let dateFormater : DateFormatter = DateFormatter();
    dateFormater.timeZone = TimeZone(abbreviation: "UTC")
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"

    let dateFromString = dateFormater.date(from: strUTCDate)

    dateFormater.timeZone = NSTimeZone.local as TimeZone!
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"

    let localData = dateFormater.string(from: dateFromString!)
    print("Your local date is \(localData)")        
}

将本地转换为 UTC

   func  convertLocalToUTC(strUTCDate: String){
    let dateFormater : DateFormatter = DateFormatter();
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"
    dateFormater.timeZone = NSTimeZone.local as TimeZone!

    let dateFromString = dateFormater.date(from: strUTCDate)

    dateFormater.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!;
    dateFormater.dateFormat = "dd-MM-yyyy HH:mm:ss"

    let localData = dateFormater.string(from: dateFromString!)
    print("Your UTC date is \(localData)")        
}

感谢大家的回答,

我挖了出来,找到了解决办法。我在这里分享代码。

    let currentDate = Date()

    let CurrentTimeZone: TimeZone = TimeZone(abbreviation: "UTC")!
    let SystemTimeZone: TimeZone = TimeZone.current

    let currentGMTOffset: Int = CurrentTimeZone.secondsFromGMT(for: currentDate)
    let SystemGMTOffset: Int = SystemTimeZone.secondsFromGMT(for: currentDate)

    let interval: TimeInterval = Double(SystemGMTOffset) - Double(currentGMTOffset)

    let todayDate: Date = Date(timeInterval: interval, since: currentDate)

    print("  Today Date : \(todayDate)")