NSDateFormatter не работает должным образом с UTC - PullRequest
2 голосов
/ 30 апреля 2011

У меня есть следующая дата: 2011-04-29T14: 54: 00-04: 00

Когда он запускает следующий код для преобразования его в дату, по какой-то причине дата становится пустой:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSDate *date = [dateFormatter dateFromString:localDate];
[dateFormatter release];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-mm-dd"];
NSLog(@"%@", [formatter stringFromDate:date]);

Буду признателен за любую помощь

РЕШЕНО:

Хорошо, я понял это.По какой-то причине этот метод не работает.

NSDate *date = [dateFormatter dateFromString:localDate];

Это работает вместо.Надеюсь, это кому-нибудь поможет!

NSError *error = nil;
NSDate *date = nil;
[dateFormatter getObjectValue:&date forString:localDate range:nil error:&error];

Ответы [ 3 ]

3 голосов
/ 30 апреля 2011

Хорошо, я понял это.По какой-то причине этот метод не работает.

NSDate *date = [dateFormatter dateFromString:localDate];

Это работает вместо.Надеюсь, это кому-нибудь поможет!

NSError *error = nil;
NSDate *date = nil;
[dateFormatter getObjectValue:&date forString:localDate range:nil error:&error];
2 голосов
/ 30 апреля 2011

Попробуйте установить часовой пояс:

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

и вам может потребоваться заключить в строку формата символы "-", ":" и "Z" (возможно, не "-" и ":", но я думаю, что по крайней мере Z):

[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];

Кроме тех, у меня настроен форматер даты, и он отлично работает.

0 голосов
/ 30 апреля 2011

NSDateFormatter, кажется, реализует только канонические форматы для часовых поясов с 'Z', как описано в UTS # 35 . При нет снисхождения при разборе .

  1. TimeZoneID +/- смещение часов и минут, разделенных двоеточием, например. 2011-04-29T14: 54: 00GMT-04: 00
  2. + / - смещение без разделения часов и минут, например. 2011-04-29T14: 54: 00-0400

Попробуйте изменить формат часового пояса в строке localDate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...