我有以下代码。当我在我的iOS 3.1.3设备上运行它(克服它!)它按预期工作,但当我在模拟器(iOS 5和4.3)上运行它时,它是1分15秒(9:01:15) )。这是因为我的代码,模拟器中的错误还是iOS 4 +中的错误?
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]];
components.hour = 9;
components.minute = 0;
NSDate *date = [calendar dateFromComponents:components]; // <-- date is off on simulator
感谢您的帮助!
答案 0 :(得分:2)
我不完全理解为什么会这样,但是当您使用dateFromComponents:
来创建很久以前的日期时会发生这种情况。具体来说,截止日期似乎是1847年12月1日。当天早上12点之前的任何事情似乎最终都是1
分15秒。
在您的情况下,这种情况正在发生,因为如果您只设置components.hour
和components.minute
,那么您将从1月1日1AD开始收到日期。
如果您将年,月和日期设置为更近期的内容,请执行以下操作:
components.year = 2012;
components.month = 2;
components.day = 6;
然后你会得到正确的输出(我在iOS模拟器中得到的):
2012-02-06 09:00:00 +0000