2016-01-18 2 views
0

это мой кодпочему дата всегда сегодня, хотя я передаю другую дату

let dateValue = formatterDate.dateFromString(request.date) 
     print("da = \(request.date)") 
     let dayValue = NSDate() 
     let compnentsDate = myCalendar.components(.Year, fromDate: dateValue!) 
     let componentsDay = myCalendar.components(.Year, fromDate: dayValue) 
     if compnentsDate.year == componentsDay.year && compnentsDate.month == componentsDay.month && compnentsDate.day == componentsDay.day { 
      cell.dateLabel.text = "today" 
     }else { 
      if compnentsDate.year == componentsDay.year && compnentsDate.month == componentsDay.month && compnentsDate.day == (componentsDay.day + 1){ 
      cell.dateLabel.text = "tomorrow" 
      }else { 
       cell.dateLabel.text = request.date 
      } 

     } 

, как вы видите, что я делаю печать, и значение отпечатка:

da = Jan, 25, 2016 

Однако , код всегда переходит к первому, если заявлению, и скажите мне «сегодня»

Почему, пожалуйста?

Что не так в моем коде?

+0

NSCalendar имеет метод isDateInToday http://stackoverflow.com/a/34441658/2303865 –

ответ

5

Необходимо указать все необходимые компоненты, когда вы вызываете функцию components:fromDate:.

Вам необходимо передать .Year, .Month и .Day, а не только .Year. Что-то вроде этого:

let compnentsDate = myCalendar.components([.Year , .Month , .Day], fromDate: dateValue!) 
let componentsDay = myCalendar.components([.Year , .Month , .Day], fromDate: dayValue) 
+0

Да это массив, спасибо, это работает – sarah

+0

Да, это правильный синтаксис. – quant24

+0

@MartinR Спасибо. Я просто сделал поиск и нашел это. Ты подтолкнул меня на это. – rmaddy

Смежные вопросы