0

私は時間をゼロに設定してNSDateのNSTimeIntervalを持たせようとしているので、一日の始まりですが、GMTではなくGMT + 2である私のタイムゾーンを常に与えてください、私はこれをやっています:

これは、NSDate で 1 日の開始を設定するカテゴリです。

#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 時間は次のとおりです。

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

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

どのように私は常に GMT 時間間隔を持つことができますか? たとえば、ニューヨーク、ローマ、リオデジャネリオで機能するソリューションを探しています。ユーザーがどこにいても gmt に nstimeinterval を提供する必要があります。誰か助けてください。

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 に答える