我正在尝试获取当地时间为 21:00 的 NSDate 对象 - 不关心是哪一天。我对这个非常奇怪的结果感到摸不着头脑:
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setHour:21];
[components setMinute:0];
[components setSecond:0];
NSDate *date = [calendar dateFromComponents:components];
NSLog(@"%@", date);
结果是0001-01-02 04:52:58 +0000
我不知道为什么。当前时间为太平洋标准时间 17:34,但结果不随当地时间变化。
如果我将 setMinute 和 setSecond 行调整为
[components setMinute:7];
[components setSecond:2];
I get 0001-01-02 05:00:00 +0000
,这是正确的(太平洋标准时间 21:00)。
问题是铁路时间直到 1883 年 11 月 18 日才实施。您忽略了设置年份,因此得到了在此之前的日期。在实施铁路时间之前,美国时区与 GMT 之间的时差并不准确。我不确定 Apple 为您选择的具体时区,但无论是哪个时区,似乎都在 1883 年转换为 PST 后调整了 7 分 2 秒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)