2014-02-12 3 views
1

У меня есть время строка в следующем формате (ISO 8601):Отображения времени из строки даты

start = "1900-01-01T11:30:00" 
stop = 1900-01-01T21:30:00 

Из приведенных выше строк, мне нужно для отображения времени, как это:

Starting Time : 11:30a.m 
Stopping Time : 09:30p.m 

Для этого я создал NSDate, используя код ниже, но я думаю, что он отображает время в формате GMT.

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
date = [dateFormatter dateFromString:opening]; 
stopTime = date; 

//Output of above code : Date = 1900-01-01 15:36:40 +0000 

Как я могу получить время начала и окончания строки из выше ISO 8601 строки времени? Нужно ли зависеть от строковых операций, а не от использования iOS NSDateformatter?

+0

Я думаю, что это то, что вам нужно: http://stackoverflow.com/ вопросы/16254575/how-do-i-get-iso-8601-date-in-ios – sCha

+0

@ Scha Я уже упоминал сообщение, которое вы упомянули. Но мой вопрос в том, как я могу преобразовать его в такой формат: 09:30? – Vaquita

ответ

2

Попробуйте это,

NSString *start = @"1900-01-01T11:30:00"; 
NSString *stop = @"1900-01-01T21:30:00"; 
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSDate *sDate = [dateFormatter dateFromString:start]; 
NSDate *eDate = [dateFormatter dateFromString:stop]; 

[dateFormatter setDateFormat:@"hh:mm a"]; 
start = [dateFormatter stringFromDate:sDate]; 
stop = [dateFormatter stringFromDate:eDate]; 

NSLog(@"Starting Time : %@", start); 
NSLog(@"Stopping Time : %@", stop); 

И выходы будут

2014-02-12 10:55:13.931 [950:a0b] Starting Time : 11:30 AM 
2014-02-12 10:55:13.932 [950:a0b] Stopping Time : 09:30 PM 
+0

Я думаю, что это не сработает, когда '24 часа' выключен в настройках устройства. –

2

Проверить это

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[dateFormatter setLocale:enUSPOSIXLocale]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

NSDate *currentDate = [NSDate date]; 
NSString *iso8601valueStr = [dateFormatter stringFromDate:currentDate]; 
Смежные вопросы