2016-05-30 140 views
-2

我在數據庫中有一個時間戳。我需要確定郵票是在今天上午7點之前還是之後。之前或之後的時間戳

我該怎麼做?

+0

什麼是你的數據庫?它是否與時區一起存儲?如果不是,我應該認爲它應該在什麼時區? –

+0

嗨,這將是格林威治標準時間 – MattBlack

+0

是在用戶的時區或格林威治時間7am? –

回答

2

在比較日期時需要小心,因爲時區可能會導致嚴重的頭痛。 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) 
+0

現貨!非常感謝! – MattBlack

+0

GMT永不改變,它永遠不會是UTC + 1。你可能意思是英國時間的變化,一年的一部分是格林尼治標準時間,夏天是BST(UTC + 1)。正如你所說,你需要小心時區;-) – CRD

+0

@CRD我自己的藥的味道。當那些夏令時! –