如何检查NSDate
是否属于今天?
我过去常常使用[aDate description]
中的前10个字符来检查它。[[aDate description] substringToIndex:10]
返回类似于"YYYY-MM-DD"
的字符串,所以我将该字符串与[[[NSDate date] description] substringToIndex:10]
返回的字符串进行了比较。
有没有更快速和/或更整洁的检查方法?
谢谢。
发布于 2011-01-29 13:09:45
这是您的问题的一个分支,但是如果您想打印带有“今天”或“昨天”的NSDate,请使用函数
- (void)setDoesRelativeDateFormatting:(BOOL)b
对于NSDateFormatter
发布于 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];
发布于 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
}
https://stackoverflow.com/questions/2331129
复制相似问题