2016-08-01 2 views
-1

Я пытаюсь преобразовать Mon, 01 Aug 2016 04:15 PM IST в NSDateПользовательские строка NSDate

Я попытался использовать код, приведенный ниже, но всегда соседствует с нуля. Пожалуйста, помогите

NSString *fullTime = @"Mon, 01 Aug 2016 04:15 PM IST"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a ZZZ"]; 
NSDate *tempTime = [dateFormatter dateFromString:fullTime]; 
+0

Я играл с ним вокруг немного, выглядит как его на «ИСТ», что проблематично. Уже есть сообщение об этом: http://stackoverflow.com/questions/24928666/how-to-format-the-date-to-ist – MCMatan

+0

Ваша проблема с частью 'IST', этот часовой пояс с тремя письмами не является поддерживается правильно. Также вы хотите установить языковой стандарт в форматировании даты, так как строка содержит конкретную дату: 'dateFormatter.locale = [NSLocale localeWithLocaleIdentifier: @" en_US "];' – rckoenes

+0

Как указано в @PiratM, вы можете либо лишить 'IST 'из строки даты или посмотреть, можно ли изменить строку даты. – rckoenes

ответ

2

Вы главный вопрос в дату IST, IST не является стандартным и может стоять для многих time zones:

IST индийской поясному времени UTC + 05: 30

IST Ирландский Standard Время UTC + 01

IST Израиль стандартное время UTC + 02

ПДР te formatter не сможет правильно форматировать дату, так как не знает, какой временной интервал имеется в виду.

Если вы можете изменить дату или удалить часть IST с даты.

Также вам нужно будет добавить языковой стандарт в формат даты, который вам известен, в каком языке используется строка даты. Для английского Beste использования en_US_POSIX:

dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 
-1

Вот рабочий код, вы должны удалить IST остальное идеально

NSString *dateString = @"Mon, 01 Aug 2016 04:15 PM"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"]; 
dateFromString = [dateFormatter dateFromString:dateString]; 

Правило гласит, что ZZZ, ZZZZ используется, когда есть время зона добавлено не тип зоны

NSString *dateString = @"Mon, 01 Aug 2016 04:15 PM +04:00"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm a ZZ"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:dateString]; 

Он вернет выход 2016-08-01 12:15:00 +0000

так что должен быть часовой пояс в IST

+0

Хотя правильно работает вопрос, как разобрать 'Mon, 01.08.2016 16:15 IST', включая часть' IST'. – rckoenes

+0

если включить IST, он возвращается nil –

+0

Правильно, но это не отвечает на вопрос. – rckoenes

1

Я попробовал ваш code.First это дает nil.Then я изменил LocaleIdentifier к en_IN потому

IST означает как Израиль поясного времени, и Индия также стандартное время it indicates this

NSString *strDate = @"Mon, 01 Aug 2016 04:15 PM IST"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm a zzz"]; 
dateFormat.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"]; 
NSDate *dateStr = [dateFormat dateFromString:strDate]; 
NSLog(@"The date is - %@",dateStr); 

отпечатанной Результат

The date is - 2016-08-01 06:45:00 +0000 

Convert between date formats in Objective-C

+0

Он работает, но формат времени НЕ в желательном формате. В любом случае, спасибо. – Vashum

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