Возможно, вы путаете момент времени (т. Е. Объект NSDate) и момент времени в вашем местоположении (т. Е. Ваше местное время).
Если вы печатаете NSDate (например, NSLog(@"%@", [NSDate date]);
, который вызывает[date description]
) печатное представление даты находится в часовом поясе UTC (+0000) (по крайней мере, на моем компьютере).
Так что, пока вы не живете в области, где используется UTC, дата печатается[описание даты];всегда "неправильно".Но неправильно означает только то, что его представление отличается от часов в вашем офисе.Дата (как в момент времени) по-прежнему верна.
Когда вы используете localizedStringFromDate:dateStyle:timeStyle:
, вы печатаете дату в своем местном часовом поясе.
NSDate *date = [NSDate date];
NSLog(@"%@", date);
NSLog(@"%@", [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle]);
на моем компьютере это приводит к:
2011-02-12 08:32:10.658 x[75647:207] Date: 2011-02-12 07:32:10 +0000
2011-02-12 08:32:10.661 x[75647:207] Date: Saturday, February 12, 2011 8:32:10 AM Central European Time
напечатанные строки отличаются, но объект NSDate остается тем же.Вот почему вы должны использовать NSDateFormatters, когда вы показываете дату пользователю.Потому что один и тот же момент времени выглядит по-разному в разных местах мира.
Но есть только три места, где дата в формате UTC будет в будущем на один час, поэтому, если вы не живете в Гренландии, на Кабо-Верде или на Азорских островах, я могу быть совершенно неправ ичто-то не так с вашими объектами NSDate.
Редактировать: Из любопытства я снова прочитал документацию о [описание даты].И он говорит:
Строковое представление получателя в международном формате ГГГГ-ММ-ДД ЧЧ: ММ: СС ± ЧЧММ, где ± ЧЧММ представляет смещение часового пояса в часах и минутах от GMT (например, «2001-03-24 10:45:32 +0600»).
Поэтому я не знаю, почему дата на моем компьютере печатается в часовом поясе GMT.Это может быть в другом часовом поясе на вашем компьютере.
Но, тем не менее, это всего лишь представление, дата все та же.