2016-02-19 42 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           
}