我需要一个日期标记,指的是UTC的最后一个星期天中午。我从dynamically create date for previous sunday at 12:00 AM获得了非常接近的东西:
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中午”不匹配。如何更正此日期以说明时区?
答案 0 :(得分:2)
[nowComponents setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
答案 1 :(得分:0)
日期是 UTC,问题是日期的NSLog()会显示当前时区的日期/时间。
对于实际使用时间:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];
NSLog(@"date: %@", [formatter stringFromDate:date]);