gpt4 book ai didi

swift - 如何将任意时区转换为 UTC?

转载 作者:行者123 更新时间:2023-11-30 13:37:22 26 4
gpt4 key购买 nike

我允许我的用户能够使用他们的本地时区选择随机日期和时间。我希望能够以 UTC 格式将此日期字符串发送到服务器,以便世界各地的任何其他人都可以使用本地时区读取它。我在网上阅读了很多关于如何将 UTC 转换为本地时间的文章,但没有阅读相反的内容。我怎样才能做到这一点?

编辑:

首先,我使用第一个函数将连接的字符串与用户选择的日期和时间连接起来,将其转换为 NSDate,然后将此 NSDate 转换为 UTC 字符串。这是实现我的目标的最佳方法吗?

public class func localTimeZoneStringToDate(string: String) -> NSDate {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
return dateFormatter.dateFromString(string)!
}

public class func UTCStringFromDate(date: NSDate) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
return dateFormatter.stringFromDate(date)

}

最佳答案

如果您使用 UIDatePicker,获取选定的 UTC 日期和时间非常简单。下面的第一行代码将返回所选时间,格式为 YYYY-MM-DD hh:mm:ss 第二行代码将返回自 1970 年 1 月 1 日中午 12:00 以来的时间间隔(以秒为单位)格林威治标准时间。

// Returns Selecteed Date //
datePicker.date

// Returns Seconds Since Jan. 1, 1970 //
datePicker.date.timeIntervalSince1970

但是,如果您不使用 UIDatePicker,则只需使用以下命令即可获得与上述代码返回的相同信息:

//** Variable "pastDate" must be NSDate **//

// Returns Selected Date //
pastDate

// Returns Seconds Since Jan.1, 1970 //
pastDate.timeIntervalSince1970

编辑:

我想我明白您现在正在尝试执行的操作,并且以下代码应以 UTC 形式返回用户选择的日期。

func UTCStringFromDate(date: NSDate) -> String {
// Get User's Time //
let calendar = NSCalendar.currentCalendar()
// Get User's TimeZone Difference //
let difference = calendar.timeZone.secondsFromGMT

// Get UTC Time //
let adjustedTime = calendar.dateByAddingUnit(.Second, value: -difference, toDate: date, options: [])!

// Format Date //
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
return dateFormatter.stringFromDate(adjustedTime)
}

关于swift - 如何将任意时区转换为 UTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com