1

UTC で最後の日曜日の正午を参照する日付スタンプが必要です。前の日曜日の午前 12:00 の動的作成日 から非常に近いものを取得しました。

NSDate *today = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setLocale:[NSLocale currentLocale]];

NSDateComponents *nowComponents = [calendar components:NSYearCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:today];

[nowComponents setWeekday:1]; //Sunday
[nowComponents setHour:12]; // noon
[nowComponents setMinute:0];
[nowComponents setSecond:0];

NSDate *previousSunday = [calendar dateFromComponents:nowComponents];

しかし、これによりNSDate、「現在のタイムゾーンの正午」のオブジェクトが得られます。これは、「GTM/UTC の正午」と一致しないことがよくあります。タイムゾーンを考慮してこの日付を修正するにはどうすればよいですか?

4

2 に答える 2

2
 [nowComponents setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
于 2013-02-04T22:25:33.293 に答える
0

日付UTC です。問題は、日付の NSLog() が現在のタイムゾーンで日付/時刻を表示することです。

実際の時間の使用について:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];
NSLog(@"date: %@", [formatter stringFromDate:date]);
于 2013-02-04T22:39:54.613 に答える