0

我正在尝试将 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

如果我检查:

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 用户在哪里,有人可以帮助我吗?

4

1 回答 1

1

您从中获取的日历currentCalendar使用当前区域设置,因此使用运行该系统的任何系统的时区。您应该为此计算创建自己的日历,将其时区设置为 GMT。

NSCalendar * GMTCal = [[NSCalendar alloc] initWithCalendarIdentifier:[[NSCalendar currentCalendar] calendarIdentifier];
[GMTCal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
于 2013-08-04T20:36:47.403 回答