iOS-NSDate (Extension)

来源:互联网 发布:常见网络协议 编辑:程序博客网 时间:2024/05/29 15:23
/** *  判断某个时间是否为今年 */- (BOOL)isThisYear{    NSCalendar *calendar = [NSCalendar currentCalendar];    // 获得某个时间的年月日时分秒    NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:self];    NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];    return dateCmps.year == nowCmps.year;}/** *  判断某个时间是否为昨天 */- (BOOL)isYesterday{    NSDate *now = [NSDate date];    // date ==  2014-04-30 10:05:28 --> 2014-04-30 00:00:00    // now == 2014-05-01 09:22:10 --> 2014-05-01 00:00:00    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];    fmt.dateFormat = @"yyyy-MM-dd";    // 2014-04-30    NSString *dateStr = [fmt stringFromDate:self];    // 2014-10-18    NSString *nowStr = [fmt stringFromDate:now];    // 2014-10-30 00:00:00    NSDate *date = [fmt dateFromString:dateStr];    // 2014-10-18 00:00:00    now = [fmt dateFromString:nowStr];    NSCalendar *calendar = [NSCalendar currentCalendar];    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;    NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];    return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;}/** *  判断某个时间是否为今天 */- (BOOL)isToday{    NSDate *now = [NSDate date];    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];    fmt.dateFormat = @"yyyy-MM-dd";    NSString *dateStr = [fmt stringFromDate:self];    NSString *nowStr = [fmt stringFromDate:now];    return [dateStr isEqualToString:nowStr];}@end- (NSString *)created_at{    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];    // 如果是真机调试,转换这种欧美时间,需要设置locale    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];    // 设置日期格式(声明字符串里面每个数字和单词的含义)    // E:星期几    // M:月份    // d:几号(这个月的第几天)    // H:24小时制的小时    // m:分钟    // s:秒    // y:年    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";//    _created_at = @"Tue Sep 30 17:06:25 +0800 2014";    // 微博的创建日期    NSDate *createDate = [fmt dateFromString:_created_at];    // 当前时间    NSDate *now = [NSDate date];    // 日历对象(方便比较两个日期之间的差距)    NSCalendar *calendar = [NSCalendar currentCalendar];    // NSCalendarUnit枚举代表想获得哪些差值    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;    // 计算两个日期之间的差值    NSDateComponents *cmps = [calendar components:unit fromDate:createDate toDate:now options:0];    if ([createDate isThisYear]) { // 今年        if ([createDate isYesterday]) { // 昨天            fmt.dateFormat = @"昨天 HH:mm";            return [fmt stringFromDate:createDate];        } else if ([createDate isToday]) { // 今天            if (cmps.hour >= 1) {                return [NSString stringWithFormat:@"%d小时前", cmps.hour];            } else if (cmps.minute >= 1) {                return [NSString stringWithFormat:@"%d分钟前", cmps.minute];            } else {                return @"刚刚";            }        } else { // 今年的其他日子            fmt.dateFormat = @"MM-dd HH:mm";            return [fmt stringFromDate:createDate];        }    } else { // 非今年        fmt.dateFormat = @"yyyy-MM-dd HH:mm";        return [fmt stringFromDate:createDate];    }}
0 0
原创粉丝点击