Как я могу создать дату без часов в текущем часовом поясе? - PullRequest
1 голос
/ 13 августа 2011

Этот вопрос следует из предыдущего вопроса ...

Как создать текущую дату (или любую дату) как NSDate без часов, минут и секунд?

Я бы использовал этот код следующим образом ...

NSDate *todaysDate = [General makeAbsoluteNSDate:[NSDate date]];

Моя проблема в том, что у меня есть пользователи в разных странах, а UTC не является их часовым поясом, и дата, создаваемая этой функцией в определенное время дня, будет неправильной.

Как получить текущий часовой пояс для исправления моей функции? Или я должен использовать другой подход?

Вот функция, которую я использовал ...

+ (NSDate *)makeAbsoluteNSDate:(NSDate*)datSource {

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:
      NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

NSDateComponents *dateComponents = [calendar components:NSYearCalendarUnit | 
                  NSMonthCalendarUnit | NSDayCalendarUnit
                  fromDate:datSource];
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];

NSDate *midnightUTC = [calendar dateFromComponents:dateComponents];
[calendar release];

return midnightUTC;
}

1 Ответ

0 голосов
/ 13 августа 2011

Вы получаете объект часового пояса из этого вызова:

[NSTimeZone localTimeZone]

И вы можете использовать метод secondsFromGMT , чтобы выяснить разницу и создать дату счасовой пояс.

Вы даже можете создать категорию для NSDate, которая включает метод для преобразования даты в текущую дату часового пояса, что было бы еще проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...