爲了將日期值傳遞給C++庫,我需要從NSDate
中提取年,月,日等。我使用NSDateComponents
,並將再次從C++庫重建NSDate
和NSDateComponents
。但我注意到,即使NSDate
我的日誌看起來完全一樣,往返比較總是失敗。這裏是一個簡單的單元測試:NSDate比較結果與NSDateComponents轉換後沒有NSOrderedSame
- (void) testCalender {
NSDate *timestamp = [NSDate date];
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:timestamp];
NSLog(@"%@", components);
//Calendar Year: 2016
//Month: 2
//Leap month: no
//Day: 26
//Hour: 10
//Minute: 48
//Second: 36
NSDate *result = [[NSCalendar currentCalendar] dateFromComponents:components];
NSLog(@"%@", timestamp); // 2016-02-26 15:48:36 +0000
NSLog(@"%@", result); // 2016-02-26 15:48:36 +0000
XCTAssertEqual([timestamp compare:result], NSOrderedSame); // Failed
}
我錯過了什麼?