2017-01-13 2 views
0

Может кто-нибудь помочь мне получить текущее время по дате UTC.
Я пытаюсь:Как получить UTC для даты в midnigs in swift

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 для текущей даты в полночь.

В базе данных я сохраняю дату как количество секунд, но на сервере она сохраняется как 13.01.2012 00:00:00, а в быстрой я получаю 1/12/2017 23:00:00, поэтому я не могу получать значения, поскольку они разные. Я не понимаю, что мне нужно сделать, чтобы получить тот же UTC.

В базе данных я сохраняю дату как можно большее количество секунд в быстром Я получаю ее по UInt64(floor(refDate!.timeIntervalSince1970)), но дата неверна.

ответ

0

Вам нужно установить hour, minute и second свойство NSDateComponents к 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) 

Или с прошивкой 8 вы также можете использовать startOfDayForDate

let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
cal.timeZone = NSTimeZone(name: "UTC")! 
let refDate = cal.startOfDayForDate(NSDate()) 
print(refDate) 
Смежные вопросы