Как отформатировать неизвестный формат даты в Objective-C - PullRequest
1 голос
/ 10 октября 2010

Я, вероятно, упустил что-то простое, но я не могу понять, как преобразовать определенный формат даты в Objective-C.Я получаю даты в этом формате:

Вс, 10 октября 2010 01:44:00 + 0000

И мне нужно преобразовать его в длинный формат с помощьюнет времени, как это:

10 октября 2010 г.

Я пытался использовать NSDateFormatter, но когда я пытаюсь получить дату из строки, она всегда приходитназад нольЯ пробовал это так:

NSString *dateFromData = [articleData objectAtIndex:5];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [dateFormatter dateFromString:dateFromData];  

NSString *formattedDateString = [dateFormatter stringFromDate:date];

Строка даты всегда возвращается ноль.Я что-то упускаю здесь?

Ответы [ 2 ]

1 голос
/ 10 октября 2010

Это код, который я получил, чтобы работать, я не смог заставить другую строку формата работать

NSString *dateFromData = @"Sun, 10 Oct 2010 01:44:00 +0000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss zzzz"];

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];

NSDate * date = [dateFormatter dateFromString:dateFromData];

[dateFormatter setDateStyle:NSDateFormatterLongStyle];

NSString *formattedDateString = [dateFormatter stringFromDate:date];
0 голосов
/ 10 октября 2010

Проблема в том, что вам нужно использовать два форматера даты.Один для анализа исходного формата и один для получения желаемого результата.Вы также не можете использовать формат даты LongStyle, так как он не соответствует вашему стилю ввода.

NSDateFormatter *df = [[NSDateFormatter alloc] initWithDateFormat:@"%a, %d %b %Y %H:%M:%S %z"
                                             allowNaturalLanguage:false];
NSDate *d = [df dateFromString:@"Sun, 10 Oct 2010 01:44:00 +0000"];
NSDateFormatter *df2 = [[NSDateFormatter alloc] initWithDateFormat:@"%B %d, %Y"
                                              allowNaturalLanguage:false];
[df2 stringFromDate:d]

(Обратите внимание, я написал этот код в MacRuby и перенес его обратно в Objective-C, так что может быть синтаксисошибки.)

irb(main):001:0> df = NSDateFormatter.alloc.initWithDateFormat("%a, %d %b %Y %H:%M:%S %z", allowNaturalLanguage:false)
=> #<NSDateFormatter:0x20021b960>
irb(main):002:0> d = df.dateFromString("Sun, 10 Oct 2010 01:44:00 +0000")
=> #<NSCalendarDate:0x2002435e0>
irb(main):004:0> df2 = NSDateFormatter.alloc.initWithDateFormat("%B %d, %Y", allowNaturalLanguage:false)
=> #<NSDateFormatter:0x20026db60>
irb(main):005:0> df2.stringFromDate(d)
=> "October 09, 2010"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...