Chaîne de date pour NSDate swift

Je vais avoir un tableau rempli avec la string de date, que je voudrais passer et vérifier si la date est aujourd'hui ou hier. La string de date pourrait ressembler à ceci:

2015-04-10 22:07:00 

Jusqu'à présent, j'ai essayé de le convertir en utilisant dateFormatter, mais il ne revient jamais

  var dateSsortingng = arrayNews[0][0].date as NSSsortingng var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" var date = dateFormatter.dateFromSsortingng(dateSsortingng as Ssortingng) println(date) 

le code sudo je voudrais ressembler à quelque chose comme ça

 if dateSsortingng == currentDate date = "Today, hh:mm" else if dateSsortingng == currentDate(-1) date = "Yesterday, hh:mm else date = dd. MM, hh:mm 

dans l'autre déclaration, la date pourrait être le 1er avril.

Comment puis-je réaliser une telle logique?

Sans la logique

 func getDate(dateStr:Ssortingng, format:Ssortingng = "yyyy-MM-dd HH:mm:ss") -> NSSsortingng { var dateFmt = NSDateFormatter() dateFmt.timeZone = NSTimeZone.defaultTimeZone() dateFmt.dateFormat = format let newsDate = dateFmt.dateFromSsortingng(dateStr)! let date = NSDate(); let dateFormatter = NSDateFormatter() dateFormatter.timeZone = NSTimeZone() let localDate = dateFormatter.ssortingngFromDate(date) return "" } 

Vous devez utiliser yyyy-MM-dd HH:mm:ss au lieu de yyyy-MM-dd hh:mm:ss

  • HH: format 24h
  • hh: format 12h (avec AM / PM)

Faites attention avec dateFormatter, par défaut, il utilise la zone locale. println() affiche la valeur de l'heure GMT, qui est maintenue par NSDate.

Cela signifie, sans spécifier de timezone, lorsque vous convertissez votre string 2015-04-10 22:07:00 à NSDatetime, il renvoie une donnée qui est l'heure à votre timezone local est 2015-04-10 22:07:00 . Comme NSDate contient l'heure de la date dans GMT, vous verrez une valeur différente lorsque vous affichez la valeur de ce NSDate avec println() .

Si votre timezone est GMT + 2 (2h avant GMT), quand il est 22h: 07 à votre place, l'heure GMT est 20h: 07. Lorsque vous appelez println() sur ce NSDate , vous voyez 2015-04-10 20:07:00

Pour comparer 2 NSDate:

 let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian) let compareResult = calendar?.compareDate(date, toDate: date2, toUnitGranularity: NSCalendarUnit.CalendarUnitDay) if (compareResult == NSComparisonResult.OrderedSame) { println("yes") } else { println("no") } 

// pour get hier, en utilisant NSCalendar:

 let yesterday = calendar?.dateByAddingUnit(NSCalendarUnit.CalendarUnitDay, value: -1, toDate: date, options: NSCalendarOptions.MatchSsortingctly)