2014-10-01 2 views
1

Вот строка датыСкрытой строки с часовым поясом на Свидание

NSString * dateString = @"Mon Sep 29 14:40:00 2014 PET"; 

Как превратить его в NSDate?

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setCalendar:[NSCalendar currentCalendar]]; 
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss yyyy zzz"]; 
NSDate* date = [dateFormatter dateFromString:dateString]; 

Выше код не работает. Каков правильный формат даты для вышеуказанного случая?

ответ

2

проблема заключается в определении вашего часового пояса (PET), поскольку это не указано в списке распознаваемых часовых поясов (просьба не спрашивать, почему нет); эта временная зона, в основном известна как UTC-5 в системе Apple, поэтому:


NSString *_dateString = @"Mon Sep 29 14:40:00 2014 PET"; 
_dateString = [_dateString stringByReplacingOccurrencesOfString:@"PET" withString:@"UTC-5"]; 
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init]; 
[_dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[_dateFormatter setCalendar:[NSCalendar currentCalendar]]; 
[_dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss yyyy zzz"]; 
NSDate *_date = [_dateFormatter dateFromString:_dateString]; 
NSLog(@"date : %@", _date); 

и консоль говорит:

date : 2014-09-29 19:40:00 +0000 

, который является правильным представлением первоначальной даты в GMT+0 часовом поясе ,

+0

Это решение будет работать только в том случае, если строка с часовым поясом поступает как ПЭТ :) Но у меня есть основная причина проблемы. Спасибо holex –

+0

@BodaSira, да, это правда, это решение относится только к часовому поясу 'PET'. было бы проще, если бы каждый внутренний сервер предоставлял временные интервалы в формате GMT ​​± xxxx, которые могут быть распознаны без двусмысленности. :) – holex

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