将 NSDate 设置为特定日期、时间和时区
我需要将 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、组件和日历和我不是好朋友......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想知道您是否可以在用于从
NSDateComponents
创建NSDate
的NSCalendar
对象上设置时区。我没有尝试过,也不知道它是否有效,但可能值得一试。I wonder if you could set the time zone on the
NSCalendar
object that you use to create theNSDate
from theNSDateComponents
. I haven't tried this and don't know if it'll work, but it's probably worth a try.NDate 本身没有时区的概念。它们基本上是自 GMT 某个任意日期以来的秒数。因此,您不能给他们一个时区。如果时区很重要,您将需要跟踪时间和时区。
NDates have no concept of time zones in and of themselves. They're basically seconds since a certain arbitrary date at GMT. As such, you can't give them a time zone. If time zone is important, you'll need to track both the time and the time zone.