2016-02-19 3 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-вчера-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 секунда? Или вы считаете, что 2 даты будут отличаться на 6 месяцев, если они будут отличаться не менее чем на 7 месяцев?

Вам нужно будет запрограммировать ваше решение по-разному в зависимости от того, какой результат вы после.

0

Swift 3:

if (nextStepDate.earlierDate(Date(timeInterval: -60*60*24*30*6, since: Date())) == date) { 
    //do something           
} 
Смежные вопросы