2015-12-05 121 views
0

我有一個特定小時minut時間戳像這樣的字符串:比較字符串與當前時間

let timeToday = "14:00" 

,我想這個時候來比較當前日期的當前時間。我遇到NSDate的問題以及它使用UTC時間戳的事實。我沒有帶用NSDateNSCalendarNSDateFormatter之前,我在它是如何難治解決這個看似簡單的任務有點沮喪......

所以我試圖從琴絃組都同時和當前時間,分成兩個NSDate變量,然後使用某種比較方法,但我似乎無法在相同的基礎上得到它們。

如何獲得兩個時間戳在同一基本?

所以我有一個NSDate的有:

NSDate: timeToday  // "2015-12-05 14:00:00 +0000" 
NSDate: currentTime // "2015-12-05 22:46:54 +0000" 
+0

+0000指UTC時間 –

+0

我不明白你在問什麼。起初我以爲你在說你想要看起來像「14:00」的時間字符串,就好像它們是當前時間和當前用戶的時區一樣。在這種情況下,您需要創建一個NSDateFormatter併爲其提供格式字符串「HH:mm」,並簡單地使用'dateFromString()'將時間字符串轉換爲日期。您可以使用相同的日期格式化程序將當前日期顯示爲時間字符串,這次使用'stringFromDate()' –

+0

您需要咬緊牙關並閱讀NSDate,NSDateFormatter,NSCalendar,尤其是部分在關於「日曆計算」的NSCalendar文檔中。該部分真的很有幫助。這個東西很複雜,有點令人困惑,需要相當深入的學習才能「(http://www.urbandictionary.com/define.php?term=grok)」。 –

回答

0

所以我最終通過對理解數據類型的conpects的文檔閱讀。 NSDate代表一個時間點,根據您在地球上的位置不同而顯示的內容會有所不同。所以使用UTC作爲時間字符串和當前時間的基礎是完全正確的。

我解決這樣的問題,使用:

let calender = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) 
calender!.locale = NSLocale.currentLocale() 

let timeToday = "14:00" 
let timeArray = openToday.componentsSeparatedByString(":") 
let timeTodayHours = Int(timeArray[0]) 
let timeTodayMin = Int(timeArray[1]) 
let timeTodayDate = calender!.dateBySettingHour(timeTodayHours!, minute: openTodayMin!, second: 00, ofDate: NSDate(), options: NSCalendarOptions()) 

let now = NSDate() 
if now.compare(timeTodayDate!) == .OrderedDescending { 
    print(" 'timeToday' has passed!!! ") 
} 
+0

您也可以嘗試使用NSDateComponents並在其上設置小時。 –