2016-02-19 101 views
2

我已經從我的服務器返回一個NSDate值,我需要知道這個NSDate是多久以前。我需要寫一個條件來查看日期是否超過6個月(在Swift中,但我可以轉換Objective-C)。檢查,看看NSDate是6個月前

這裏是NSDate的返回,印在控制檯時:

(2015-09-07 01:22:01 +0000) 

如何檢查,如果超過這個時間超過6個月以上?

的邏輯是這樣的:

//dateValue is the NSDate returned 
var dateValue = log.createdAt 
    if (dateValue > 6 months){ 
    } 
    else{ 
    } 
+0

檢查這些鏈接,http://stackoverflow.com/questions/26198526/nsdate-comparison-using-swift和http://stackoverflow.com/questions/ 1889164/get-nsdate-today-yesterday-this-week-last-week-this-month-last-month-var – UlyssesR

+0

[兩個NSDates之間的月和天數](http://stackoverflow.com/q/11654741 ) –

回答

-3
if date.earlierDate(NSDate(timeInterval: -60*60*24*30*6, sinceDate: NSDate())) == date { 
     // 6 months passed since date 

    } 
+0

好的,你想減少這個答案的重點還是解釋爲什麼它不夠好? – Etgar

+2

不是每個月都有30天,夠好嗎? :) – Breek

+1

我沒有投票給你,但這不是一個好的解決方案。日數從蛾到月不等。正如我的答案中所建議的,使用'NSCalendar'方法來比較日期更好。 –

4

看看在NSCalendar類,具體方法如components:fromDate:toDate:options:

如果這兩個日期在6個月和一天之間是不同的,那是> 6個月嗎? 6個月和1秒怎麼樣?或者,如果兩個日期相差至少7個月,您是否只考慮兩個日期的差異大於6個月?

您需要根據您的確切結果對解決方案進行不同的編碼。

0

斯威夫特3:

if (nextStepDate.earlierDate(Date(timeInterval: -60*60*24*30*6, since: Date())) == date) { 
    //do something           
}