美文网首页
关于昨天、明天的判断

关于昨天、明天的判断

作者: ShenYj | 来源:发表于2017-03-23 21:30 被阅读56次

iOS 8开始,苹果在NSCalendar中为我们直接提供了用于昨天今天判断的API

/*
    This API reports if the date is within "yesterday".
*/
- (BOOL)isDateInYesterday:(NSDate *)date NS_AVAILABLE(10_9, 8_0);

/*
    This API reports if the date is within "tomorrow".
*/
- (BOOL)isDateInTomorrow:(NSDate *)date NS_AVAILABLE(10_9, 8_0);

iOS 8之前,还是需要我们手动实现的,示例代码:

// 判断传入的date对象是否是昨天
- (BOOL)isYesterday {
    NSDateComponents *components = [self dateComponentsToNow];
    return components.year == 0 && components.month == 0 && components.day == 1;
}
// 判断传入的date对象是否是明天
- (BOOL)isTomorrow {
    NSDateComponents *components = [self dateComponentsToNow];
    return components.year == 0 && components.month == 0 && components.day == -1;
}
// 将当前date转换为特定格式的字符串date
- (NSString *)dateformatterString:(NSString *)dateformatter {
    [JSDateFormatter sharedDateFormatterManager].dateFormat = dateformatter;
    return [[JSDateFormatter sharedDateFormatterManager] stringFromDate:self];
}
// 日期比较 传入的NSDate对象和[NSDate date]的比较返回值
- (NSDateComponents *)dateComponentsToNow {
    NSString *selfString = [self dateformatterString:@"yyyyMMdd"];;
    NSString *nowString = [[NSDate date] dateformatterString:@"yyyyMMdd"];
    
    NSDate *selfDate = [[JSDateFormatter sharedDateFormatterManager] dateFromString:selfString];
    NSDate *nowDate = [[JSDateFormatter sharedDateFormatterManager] dateFromString:nowString];
    
    NSCalendar *calendar = nil;
    if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {
        calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
    } else {
        calendar = [NSCalendar currentCalendar];
    }
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
    NSDateComponents *components = [calendar components:unit fromDate:selfDate toDate:nowDate options:0];
    return components;
}
  • 实现思路:
    • 忽略掉时分秒的干扰,先将NSDate对象转成只包含年月日的字符串,再将转换后的字符串日期转换回NSDate对象,[NSDate date]同样也是
    • 这样我们需要判断的NSDate对象和当前日期对象就都只包含年月日,再通过NSCalendar进行比较,如果.day相差1,代表为昨天;如果.day相差-1,代表明天

相关文章

  • 关于昨天、明天的判断

    从iOS 8开始,苹果在NSCalendar中为我们直接提供了用于昨天和今天判断的API 在iOS 8之前,还是需...

  • 日历中昨天、今天、明天判断。

    if ([LogDataModel.type isEqualToString:@"0"]){ if ([datet...

  • Android 判断昨天今天明天

    之前写过一天判断昨天今天明天的文章,《Android Java 判断日期是昨天今天明天》今天分享一篇我认为更好的判...

  • 关于昨天、明天与今天

    There is a saying: yesterday is history. tomorrow is a my...

  • 关于昨天,今天和明天

    明天总是能让我们幻想,而昨天又让我们留恋。事实上,我们能把握的只有当下。 任何和年龄不相符的想法都令人奇怪和喷饭。...

  • “昨天的明天”与“明天的昨天”

    99%的人看到这个标题会懵逼一会儿,然后会若有所思的解读这个词; 1%的人完全理解不了这两个词,不知道这两个词代表...

  • 昨天的明天

    翻翻记录,上一次登入这个软件都是暑假的事情了。然后就被自己卸载了。 不喜欢分享文字。很神奇。我相信文字和语言都是有...

  • 昨天的明天

    去启程,在路上 有着昨天的明天 闪亮的美好在触手可及处 昨天,偶然发掘的,工业血液 明天,必然成就的,繁花似锦 雄...

  • 昨天的明天

    今天偷的一日闲,在家…听了两遍罗辑思维的跨年演讲…几点收获 1.有限的时间做无限的事是没意义的,这就是我现在从事的...

  • 昨天的明天

    现在看起来,大雾。反正楼下的湖像仙境,里面的鱼鱼虾虾应该可以趁机探头探脑了,时间晚一点会不会变浓雾,有待观察。 奔...

网友评论

      本文标题:关于昨天、明天的判断

      本文链接:https://www.haomeiwen.com/subject/pvntottx.html