У меня есть метка времени в базе данных. Мне нужно определить, является ли печать до или после сегодняшней даты в 7 часов утра.Временная метка до или после
Как это сделать?
У меня есть метка времени в базе данных. Мне нужно определить, является ли печать до или после сегодняшней даты в 7 часов утра.Временная метка до или после
Как это сделать?
Вы должны быть осторожны при сравнении дат, поскольку часовой пояс может вызвать большую головную боль. NSDate
всегда хранит время в часовом поясе UTC. В зависимости от летнего времени местное британское время может быть UTC + 0 или UTC + 1.
Дайте этому попытку:
// This extension is optional. It makes comparing dates easier
extension NSDate: Comparable {}
public func <(lhs: NSDate, rhs: NSDate) -> Bool {
return lhs.timeIntervalSince1970 < rhs.timeIntervalSince1970
}
// This part simulates the time you get from the database
let dbCalendar = NSCalendar.currentCalendar()
dbCalendar.timeZone = NSTimeZone(name: "GMT")!
let timestampFromDB = dbCalendar.dateWithEra(1, year: 2016, month: 5, day: 30, hour: 10, minute: 0, second: 0, nanosecond: 0)!
// Convert 7AM today from user's time to UTC
let userCalendar = NSCalendar.currentCalendar()
let todayAt7 = userCalendar.dateBySettingHour(7, minute:0, second:0, ofDate: NSDate(), options: [])!
print(timestampFromDB < todayAt7)
Пятно на! Спасибо огромное! – MattBlack
GMT никогда не меняется, это никогда не UTC + 1. Вероятно, вы имеете в виду, что время Великобритании меняется, часть года - GMT, а летом - BST (это UTC + 1). Как вы говорите, вам нужно быть осторожным с часовыми поясами ;-) – CRD
@CRD Вкус моего собственного лекарства. Дань летнее время! –
Что вы DB? Сохраняется ли он с часовым поясом? Если нет, то какой часовой пояс я должен считать, что он находится? –
Привет, будет GMT – MattBlack
Это 7 часов в часовом поясе пользователя или в GMT? –