Неправильное время с NSDate и NSTimezone - PullRequest
1 голос
/ 24 ноября 2011

У меня есть две даты (написанные в двух разных NSString), например

31/12/2011

и

31/03/2012

Я должен проверить, находится ли сегодня в этом диапазоне.

Для чтения даты из строки NSS, я делаю это:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *mydate = [dateFormatter dateFromString:my_string];
NSLog(@"%@", mydate);

, но, в этом примере, это журнал

2011-12-30 23:00:00 +0000
2012-03-30 23:00:00 +0000

Так что это один часпозади.Я знаю, что используя

NSString *string = [dateFormatter stringFromDate:my_date];

мою строку, все будет в порядке, но я не могу видеть, находится ли сегодня в диапазоне использование NSString (или нет?)!

Итак, я должен использовать NSDate, но как я могу решить проблему с «часовым поясом»?

Кроме того, у меня есть эта проблема, также используя

[NSDate date];

Возвращаетя один час назад (и я не хочу этого, потому что, если кто-то проверит в полночь, для телефона это будет день раньше!)

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Следующее должно помочь:

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];

для более подробной информации, пожалуйста, проверьте Этот вопрос ... Выглядит похоже.«EST» можно заменить на любой часовой пояс.

0 голосов
/ 24 ноября 2011

Я могу ошибаться, но похоже, что в этом случае вам не нужно заботиться о часовых поясах. Если у вас есть только даты в формате dd / MM / yyyy, когда вы проанализируете их с помощью NSDateFormatter, по умолчанию будет использоваться текущий часовой пояс. Поэтому, когда вы будете сравнивать с вашей сегодняшней датой, все 3 даты будут находиться в одном часовом поясе, и настройка даты / времени не будет выполнена.

...