将NSDate设置为特定日期,时间和时区

时间:2010-09-07 03:42:36

标签: iphone xcode nsdate init

我需要将NSDate设置为iPhone App的特定日期,时间和时区。

下面的示例代码在iOS 4上正常工作,因为在iOS 4中引入了setTimeZone。如何在不使用setTimeZone的情况下轻松地将NSDate设置为日期,时间和时区,以便可以在iOS 3.0设备上使用?

    NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2010];
[comps setMonth:8];
[comps setDay:24];
[comps setHour:17];
[comps setMinute:5];
[comps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"] ];

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *referenceTime = [cal dateFromComponents:comps];

猜猜这应该很简单,但不知何故,NSDate,组件和日历以及我都不是好朋友......

2 个答案:

答案 0 :(得分:3)

NDates本身没有时区概念。从格林威治标准时间的任意日期开始,它们基本上都是秒。因此,你不能给他们一个时区。如果时区很重要,则需要同时跟踪时区和时区。

答案 1 :(得分:3)

我想知道您是否可以在NSCalendar对象上设置时区,用于从NSDate创建NSDateComponents。我没有试过这个,也不知道它是否有用,但它可能值得一试。