2013-08-04 1 views
0

Я пытаюсь получить NSTimeInterval из NSDate со временем, установленным на ноль, поэтому начало дня, но всегда дайте мне часовой пояс, который является GMT + 2, а не GMT, i ' м делает это:NSTimeInterval of startOfDay NSDate to GMT

Это категория, чтобы установить начало дня в NSDate:

#define DATE_COMPONENTS (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit) 
#define CURRENT_CALENDAR [NSCalendar currentCalendar] 

- (NSDate *) dateAtStartOfDay 
{ 
NSDateComponents *components = [CURRENT_CALENDAR components:DATE_COMPONENTS fromDate:self]; 
components.hour = 0; 
components.minute = 0; 
components.second = 0; 
return [CURRENT_CALENDAR dateFromComponents:components]; 
} 

тогда я это сделать:

NSTimeInterval now = [[[NSDate date] dateAtStartOfDay] timeIntervalSince1970]; 

и дать мне эту NSTimeInterval:

1375567200 

, что если я проверить:

http://www.epochconverter.com

время по Гринвичу это:

GMT: Sat, 03 Aug 2013 22:00:00 GMT 

Mine tiem zone: 04 agosto 2013 00:00:00 CEST GMT+2 

, как я могу всегда интервал времени GMT? Я ищу решение, которое работает в Нью-Йорке, Риме, Рио-де-Жанерио, например, должно дать мне nstimeinterval для gmt, где бы он ни был, кто-нибудь может мне помочь?

ответ

0

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

NSCalendar * GMTCal = [[NSCalendar alloc] initWithCalendarIdentifier:[[NSCalendar currentCalendar] calendarIdentifier]; 
[GMTCal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];