从核心数据中的(日期时间)格式获取(日期)

时间:2014-04-09 10:33:14

标签: ios objective-c date core-data

我正在使用核心数据,并以日期和时间格式存储值。但是我希望在获得日期和时间格式的同时获得(日期)格式。

2 个答案:

答案 0 :(得分:2)

NSDate是一个绝对时间点,Core Data将日期存储为秒数 自“参考日期”2001年1月1日以来。严格来说,没有这样的事情 “没有时间约会”。

如果您想显示年,月,日......日期,那么您必须使用NSDateFormatter 或NSDateComponents - 正如其他人已经说过的那样 - 将日期转换为人类可读的 格式。

但是从你的评论中我假设你想要获取指定的所有对象 天。在这种情况下,您必须首先计算给定日期的开始日期和结束日期

NSDate *yourDate = ...;
NSDate *startOfDay, *endOfDay;
NSTimeInterval lengthOfDay;
NSCalendar *cal = [NSCalendar currentCalendar];
[cal rangeOfUnit:NSDayCalendarUnit startDate:&startOfDay interval:&lengthOfDay forDate:yourDate];
endOfDay = [startOfDay dateByAddingTimeInterval:lengthOfDay];

或者,如果日期是年,月,日:

NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps.year = 2014;
comps.month = 1;
comps.day = 14;
NSDate *startOfDay = [cal dateFromComponents:comps];
comps.day += 1;
NSDate *endOfDay = [cal dateFromComponents:comps];

然后使用一个谓词来查找当天开始和结束之间的所有记录:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"date >= %@ AND date < %@",
             startOfDay, endOfDay];

这将获取与给定yourDate在同一天具有“日期”的所有对象。

答案 1 :(得分:0)

您可以从coredata检索数据,如果您将其存储为NSDate格式或NSString格式,则该过程将几乎相似。

如果是NSDate

创建一个NSDateFormatter,只为您提供(dd-mm-yyyy)格式的日期,您将获得NSString个对象。

如果是NSString

然后你需要先将字符串日期转换为NSDate并执行上述操作。

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"date-format"]; //here you need to change the format as per your string
NSDate *date = [dateFormatter dateFromString:dateString];