swift - 如何在 swift 中获取日期的 UTC

标签 swift nsdate utc swift2

谁能帮我获取当前的 UTC 日期时间。
我正在尝试:

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
        let components = cal.components([.Day , .Month, .Year ], fromDate: NSDate())
        let refDate = cal.dateFromComponents(components)

但我得到 1/12/2017 23:00:00 这似乎是 UTC 本地时间。
我想在午夜获取当前日期的 UTC。

在数据库中,我将日期保存为秒数,但在服务器上它保存为 1/13/2017 00:00:00 并且很快我得到 1/12/2017 23:00:00 所以我无法获得值它们是不同的我不明白我需要做什么才能获得相同的 UTC。

在数据库中,我在 swift 中将日期保存为很长的秒数,我通过 UInt64(floor(refDate!.timeIntervalSince1970)) 获取它,但日期不正确。

最佳答案

您需要将NSDateComponentshourminutesecond 属性设置为0

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
cal.timeZone = NSTimeZone(name: "UTC")!
let components = cal.components([.Day , .Month, .Year,.Hour, .Minute, .Second], fromDate: NSDate())
components.hour = 0
components.minute = 0
components.second = 0
let refDate = cal.dateFromComponents(components)

或者从 iOS 8 你也可以使用 startOfDayForDate

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
cal.timeZone = NSTimeZone(name: "UTC")!
let refDate = cal.startOfDayForDate(NSDate())
print(refDate)

关于swift - 如何在 swift 中获取日期的 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634399/

相关文章:

iphone - 字符串转 NSDate

iphone - 比较 NSDates 以确定白天还是晚上?

iphone - 获得适当时间的问题

java - 如何最小化此处将日期字符串转换为 UTC 的代码

delphi - UTC 支持比较 2 个文件的日期/时间

linux - 如何在 Linux 上的 shell 脚本中将 UTC 转换为本地时间

ios - 将数据传递给 collectionView(numberOfItemsInSection) 函数 (Swift)

xcode - 仅在存档的 Cocoa 应用程序中内存访问崩溃(EXC_BAD_ACCESS/EXC_I386_GPFLT)

swift - 控制系统声音的音量

ios - 如何手动设置 UIDocumentInteractionController 呈现的选项菜单的箭头方向?