【发布时间】:2014-02-09 19:17:57
【问题描述】:
我从互联网收到的日期格式如下:
“2014-12-01T20:00:00Z”
我正在以这种格式在核心数据中存储日期..属性类型也是“Nsdate”类型..
- (NSDateFormatter *)dateFormate
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy'-'dd'-'MM'T'HH':'mm':'ssZZZ"];
}
使用
获取 [NSDate Date] 的开始时间- (NSDate *)cc_dateByMovingToBeginningOfDay
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:self];
[parts setHour:0];
[parts setMinute:0];
[parts setSecond:0];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
[NSDate Date] 的结束时间,使用:
- (NSDate *)cc_dateByMovingToEndOfDay
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:self];
[parts setHour:23];
[parts setMinute:59];
[parts setSecond:59];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
并用这个获取:
- (void)ObjectsFrom:(NSDate *)fromDate to:(NSDate *)toDate {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"((due_at > %@) AND (due_at < %@))",fromDate, toDate];
}
但记录始终为零。因为我知道在我今天的日期我在数据库中有多个记录..我不知道为什么会发生这种情况..
我也使用 NSComparisonResult 作为日期但是没有记录是在日期之间。
所以请帮我解决这个问题..
【问题讨论】:
-
我已经像这样完成了 NSComparisonResult 但它也失败了.. static BOOL IsDateBetweenInclusive(NSDate *date, NSDate *begin, NSDate *end) { return [date compare:begin] != NSOrderedAscending && [日期比较:结束]!= NSOrderedDescending; }
标签: core-data nsdate nspredicate nsdateformatter nscalendar