15

我需要将 NSDate 设置为 iPhone 应用程序的特定日期、时间和时区。

下面的示例代码在 iOS 4 上运行良好,因为 setTimeZone 是在 iOS 4 中引入的。如何在不使用 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、组件和日历和我不是好朋友......

4

2 回答 2

3

NDates 本身没有时区的概念。自格林威治标准时间的某个任意日期以来,它们基本上是几秒钟。因此,您不能给他们一个时区。如果时区很重要,您需要同时跟踪时间和时区。

于 2010-09-07T03:54:12.663 回答
3

我想知道您是否可以在NSCalendar用于NSDateNSDateComponents. 我没有尝试过,不知道它是否会起作用,但它可能值得一试。

于 2010-09-07T03:56:34.283 回答