【发布时间】:2017-06-11 05:41:30
【问题描述】:
我发现了很多类似我的问题,但我不明白为什么它不起作用。
我的核心数据数据库中有一个开放时间列表。 我想知道在给定日期它是打开还是关闭。
但我不想查看日期。仅显示小时、分钟和秒。
这里是我的对象的模型打开:
- NSNumber * 天;
- NSDate * 开始;
- NSDate * 结束;
我的问题是从我的 NSDate 对象中提取时间后,我的时间总是比原始日期多 42 分 30 秒。
这是我的代码:
NSCalendar * calendar = [NSCalendar currentCalendar];
NSCalendarUnit flags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
for (Opening * opening in openingsForDate) {
NSDateComponents *date1Components = [calendar components:flags fromDate:date];
NSDateComponents *date2Components = [calendar components:flags fromDate:opening.start];
NSDateComponents *date3Components = [calendar components:flags fromDate:opening.end];
NSDate *date1 = [calendar dateFromComponents:date1Components];
NSDate *date2 = [calendar dateFromComponents:date2Components];
NSDate *date3 = [calendar dateFromComponents:date3Components];
NSLog(@"%@ => %@", date, date1);
NSLog(@"%@ => %@", opening.start, date2);
NSLog(@"%@ => %@", opening.end, date3);
}
这里是输出:
2017-01-25 22:10:41 +0000 => 0001-01-01 22:53:11 +0000
2017-01-25 11:00:00 +0000 => 0001-01-01 11:42:30 +0000
2017-01-25 22:00:00 +0000 => 0001-01-01 22:42:30 +0000
有什么想法吗? 谢谢。
编辑:找到解决方案here!
【问题讨论】:
-
我是否应该存储 NSNumber 而不是 NSDate。那么将小时、分钟和秒转换为 NSTimeInterval 并将其存储在我的核心数据数据库中吗?但是,我不明白为什么我还有 42 分 30 秒 ^^
标签: ios objective-c nsdate nsdatecomponents