Ошибка за год в NSDate

Реальное время: 2015-02-17 04:48:06 +0000
Время ошибки: 1472-02-17 04:48:06 +0000

Начальная датаФорматер

 dateFormatter =  NSDateFormatter()
 dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ"
 dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC+07:00")

Запрос кода

var dataTimeAddedWithSplit = split(dataTimeAdded){$0 == ","}

    for var i = 0 ; i < dataTimeAddedWithSplit.count ; i++ {
    var predicateTypeActivities : NSPredicate = NSPredicate(format: "timeAdded == %@", dateFormatter.dateFromString(dataTimeAddedWithSplit[i])! )!
    fetchRequest.predicate = predicateTypeActivities
        println(dateFormatter.dateFromString(dataTimeAddedWithSplit[i])!)

Помогите мне, пожалуйста, T^T
Эта проблема случается на реальном устройстве, но я использовал на симуляторе IOS не нашел проблемы.

1 ответ

Решение

Держу пари, что проблема в локали. 2015-02-17 в буддийском календаре - 2558-02-17 (год отличается 543 года). Ваша дата 1472 года, по совпадению, тоже точно на 543 года (но наоборот). Это почти как дата 2015 года была прочитана на устройстве с буддийским календарем, а затем попросили отобразить дату в формате григорианского календаря. Я не вижу именно такой схемы в вашем вопросе, но смещение года предполагает, что нечто подобное произошло где-то вдоль линии.

В итоге, если вы создаете / интерпретируете строки даты для передачи в веб-службу или хранилище в базе данных, целесообразно использовать общий формат (часто для этой цели используется дата ISO 8601 или RFC 3339) как для чтения, так и для записи. даты. В TN 1480 Apple предлагает указать locale из en_US_POSIX,

Другие вопросы по тегам