2016-06-30 3 views
1

У меня возникает эта проблема, когда правильное время передается, но как только оно попадает в [formatter setDateFormat:date], оно появляется в другом часовом поясе. Вот отрывокПреобразование времени по местному времени в Objective-C

NSDate* date = user.startDate; 
NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
NSLog(@"-------> (1) time is %@", date); 
NSLog(@"-------> (2) time is %@", date); 
[format setDateFormat:@"h:mm a"]; 
NSLog(@"-------> (3) time is %@", date); 
NSLog(@"-------> (4) time is %@", [format stringFromDate:date]); 

Здесь выход отладчик для сообщений журнала

-------> (1) time is 2016-06-30 09:25:17 +0000 
-------> (2) time is 2016-06-30 09:25:17 +0000 
-------> (3) time is 2016-06-30 09:25:17 +0000 
-------> (4) time is 2:25 AM 

Я ожидаю выход для (4) быть time is 9:25 AM

+0

Я удалил код, который не имеет отношения к вашему вопросу (но сохранил повторяющиеся строки так, чтобы ссылки в ответах оставались действительными). – Eiko

+0

Обратите внимание, что (1), (2), (3) просто выполняют точную вещь samt. Дата неизменна и одна и та же, и вы не используете форматировщик. – Eiko

ответ

1

Ваш часовой пояс, по-видимому, UTC-7000.

NSLog отпечатки NSDate объекты всегда в UTC, NSDateFormatter рассматривает текущий часовой пояс. Печатные даты на самом деле одинаковы.

Если вам действительно нужны все даты в UTC, установите часовой пояс форматирования.

format.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 

К слову: Существуют встроенные методы проверки, существует ли дата сегодня или вчера.

1

Вот что происходит: журнал даты всегда будет GMT. (Я не думаю, что для меня имеет смысл вдаваться в подробности, поскольку есть большое объяснение here.) Это означает, что журналы 1, 2 и 3 будут «неправильными» (не в вашем часовом поясе), и этого следует ожидать.

Если вы хотите зарегистрировать строку как GMT, вы можете изменить свойство timeZone вашего форматирования даты.

Работа с датами может быть чрезвычайно сложной. Пожалуйста, найдите время, чтобы прочитать, если не все, некоторые важные части документа this (основы/основы).

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

  • Нет связанных вопросов^_^