2015-11-12 3 views
1

Получаем отметку времени с сервера как «2015-11-12T03: 54: 52Z», которая находится в PST. Я хочу преобразовать эту строку в формат UTC/Local time zone. Я попытался следующим образомObjective-c: Как конвертировать PST в UTC/местный часовой пояс

NSDateFormatter *pstFormatter = [[NSDateFormatter alloc] init]; 
[pstFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Los_Angeles"]]; 
[pstFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSDate *pstQUU = [pstFormatter dateFromString:@"2015-11-12T04:03:03Z"]; 

Original output : 2015-11-12 04:03:03 +0000 
Expected output : 2015-11-12 12:03:03 +0000 (UTC) 
+0

Сервер должен использовать Unix времени (UTC) Почему бы сервер курьерские раз в PST? –

+0

@ DuncanC: Сервер отправляет время PST. – Javeed

+0

Сервер отправляет строки времени? Использование сервера в конкретном часовом поясе - плохой дизайн. UTC - это стандарт обмена временем/датами через Интернет. –

ответ

0

Try добавление UTC смещение значения, как этот

NSDateFormatter *pstFormatter = [[NSDateFormatter alloc] init]; 
    NSTimeZone *pstTimezone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"]; 
    [pstFormatter setTimeZone:pstTimezone]; 
    [pstFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
    NSDate *pstDate = [pstFormatter dateFromString:@"2015-11-12T04:03:03Z"]; 

    NSTimeInterval utcSeconds = [pstDate timeIntervalSince1970] - [pstTimezone secondsFromGMT]; 
    NSDate *utcDate = [NSDate dateWithTimeIntervalSince1970:utcSeconds]; 
+0

Он отлично работает с другими форматами, такими как CST, EST и т. Д. Тоже – Javeed

+0

Нет смысла устанавливать часовой пояс для форматирования даты при анализе строки, определяющей ее собственный часовой пояс. – rmaddy

+0

@rmaddy Часовой пояс - это только разница между GMT. Он не имеет отношения к преобразованию строки в объект Date. – Javeed

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