我正在尝试将NSDate的NSTimeInterval设置为零,所以当天的开始,但总是我的时区是GMT + 2而不是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
如果我检查:
gmt时间是这样的:
GMT: Sat, 03 Aug 2013 22:00:00 GMT
Mine tiem zone: 04 agosto 2013 00:00:00 CEST GMT+2
我怎么能始终拥有GMT时间间隔?我正在寻找一个在纽约,罗马,Rio de janerio工作的解决方案,必须给我一个用户所在的gmt的nstimeinterval,任何人都可以帮助我吗?
答案 0 :(得分:0)
您从currentCalendar
获得的日历使用当前的区域设置,从而使用正在运行的任何系统的时区。您应为此计算创建自己的日历,并将其时区设置为GMT。
NSCalendar * GMTCal = [[NSCalendar alloc] initWithCalendarIdentifier:[[NSCalendar currentCalendar] calendarIdentifier];
[GMTCal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];