首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确定NSDate是否是今天的?

如何确定NSDate是否是今天的?
EN

Stack Overflow用户
提问于 2010-02-25 10:16:52
回答 17查看 72.1K关注 0票数 158

如何检查NSDate是否属于今天?

我过去常常使用[aDate description]中的前10个字符来检查它。[[aDate description] substringToIndex:10]返回类似于"YYYY-MM-DD"的字符串,所以我将该字符串与[[[NSDate date] description] substringToIndex:10]返回的字符串进行了比较。

有没有更快速和/或更整洁的检查方法?

谢谢。

EN

回答 17

Stack Overflow用户

发布于 2011-01-29 13:09:45

这是您的问题的一个分支,但是如果您想打印带有“今天”或“昨天”的NSDate,请使用函数

- (void)setDoesRelativeDateFormatting:(BOOL)b

对于NSDateFormatter

票数 27
EN

Stack Overflow用户

发布于 2010-02-25 10:40:08

我会尝试将今天的日期标准化为午夜,将第二个日期标准化为午夜,然后比较是否为相同的NSDate。

an Apple example中,这里是如何将今天的日期归一化到午夜,对第二个日期执行相同的操作并进行比较:

NSCalendar * gregorian = [[NSCalendar alloc]
                               initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents * components =
    [gregorian components:
                 (NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit)
                 fromDate:[NSDate date]];
NSDate * today = [gregorian dateFromComponents:components];
票数 16
EN

Stack Overflow用户

发布于 2013-07-15 01:53:31

不需要纠结于组件、era和其他东西。

NSCalendar提供了一种方法,用于获取现有日期的某个时间单位的开始时间。

此代码将获取今天的开始日期和另一个日期,并对其进行比较。如果它的计算结果为NSOrderedSame,则两个日期都在同一天--今天也是如此。

NSDate *today = nil;
NSDate *beginningOfOtherDate = nil;

NSDate *now = [NSDate date];
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&today interval:NULL forDate:now];
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&beginningOfOtherDate interval:NULL forDate:beginningOfOtherDate];

if([today compare:beginningOfOtherDate] == NSOrderedSame) {
    //otherDate is a date in the current day
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2331129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档