iOS以UTC格式计算上周日中午的日期戳

时间:2013-02-04 22:09:06

标签: ios nsdate

我需要一个日期标记,指的是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中午”不匹配。如何更正此日期以说明时区?

2 个答案:

答案 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]);