OGeek|极客世界-中国程序员成长平台

标题: ios - 仅从核心数据中的(日期时间)格式获取(日期) [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 09:15
标题: ios - 仅从核心数据中的(日期时间)格式获取(日期)

我正在使用核心数据并以日期和时间格式存储一个值。但是我想在获取日期和时间格式时只获取(日期)格式。



Best Answer-推荐答案


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 具有同一天“日期”的所有对象。

关于ios - 仅从核心数据中的(日期时间)格式获取(日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959884/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4