我正在嘗試創建一個時間設置爲12:00:01 am的日期。秒和分鐘正確地設置了它們的值,但小時值總是達到我設置的值+ 4.爲什麼是4?這個價值有什麼特別之處?分鐘和秒的值設置爲我想要的正確,但它似乎小時值只是增加而不是替代。NSDateComponent setHour設置不正確
這裏是代碼,
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
[components setHour:0];
[components setMinute:0];
[components setSecond:1];
NSDate *compareTime = [calendar dateFromComponents:components];
NSLog(@"compareTime: %@", compareTime);
NSLog(@"currentTime: %@", now);
輸出是:
compareTime:2013年5月17日4時00分01秒0000
currentTime的:2013年5月17日15: 00:37 +0000
這也可能是您的本地時間和UTC之間的差別。你在什麼時區? – Aaron
我在美國東部時間。但爲什麼會有所作爲呢?無論時區如何,0都應爲0。它實際上是在嘗試自動調整嗎?如果是的話,爲了解決這個問題我需要做些什麼? – JMD
默認情況下[NSDate date]爲您提供原始日期,並且不會假定當地時區。 – Aaron