iOS - NSDate分类-判断时间是否为今天,昨天,一周内,年月日
2017-01-08 14:32
561 查看
#import <Foundation/Foundation.h> @class JYChatMessageModel; @interface NSDate (extension) //判断时间戳是否为当天,昨天,一周内,年月日 + (NSString *)timeStringWithTimeInterval:(NSString *)timeInterval; @end
#import "NSDate+extension.h" @implementation NSDate (extension) + (NSString *)timeStringWithTimeInterval:(NSString *)timeInterval { NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval.longLongValue/1000]; //此处根据项目需求,选择是否除以1000 , 如果时间戳精确到秒则去掉1000 NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; //今天 if ([date isToday]) { formatter.dateFormat = @"HH:mm"; return [formatter stringFromDate:date]; }else{ //昨天 if ([date isYesterday]) { formatter.dateFormat = @"昨天HH:mm"; return [formatter stringFromDate:date]; //一周内 [date weekdayStringFromDate] }else if ([date isSameWeek]){ formatter.dateFormat = [NSString stringWithFormat:@"%@%@",[date weekdayStringFromDate],@"HH:mm"]; return [formatter stringFromDate:date]; //直接显示年月日 }else{ formatter.dateFormat = @"yy-MM-dd HH:mm"; return [formatter stringFromDate:date]; } } return nil; } //是否在同一周 - (BOOL)isSameWeek { NSCalendar *calendar = [NSCalendar currentCalendar]; int unit = NSCalendarUnitWeekday | NSCalendarUnitMonth | NSCalendarUnitYear ; //1.获得当前时间的 年月日 NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]]; //2.获得self NSDateComponents *selfCmps = [calendar components:unit fromDate:self]; return (selfCmps.year == nowCmps.year) && (selfCmps.month == nowCmps.month) && (selfCmps.day == nowCmps.day); } //根据日期求星期几 - (NSString *)weekdayStringFromDate{ NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期天", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil]; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"]; [calendar setTimeZone: timeZone]; NSCalendarUnit calendarUnit = NSCalendarUnitWeekday; NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:self]; return [weekdays objectAtIndex:theComponents.weekday]; } //是否为今天 - (BOOL)isToday { //now: 2015-09-05 11:23:00 //self 调用这个方法的对象本身 NSCalendar *calendar = [NSCalendar currentCalendar]; int unit = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear ; //1.获得当前时间的 年月日 NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]]; //2.获得self NSDateComponents *selfCmps = [calendar components:unit fromDate:self]; return (selfCmps.year == nowCmps.year) && (selfCmps.month == nowCmps.month) && (selfCmps.day == nowCmps.day); } //是否为昨天 - (BOOL)isYesterday { //2014-05-01 NSDate *nowDate = [[NSDate date] dateWithYMD]; //2014-04-30 NSDate *selfDate = [self dateWithYMD]; //获得nowDate和selfDate的差距 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *cmps = [calendar components:NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0]; return cmps.day == 1; } //格式化 - (NSDate *)dateWithYMD { NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd"; NSString *selfStr = [fmt stringFromDate:self]; return [fmt dateFromString:selfStr]; }
相关文章推荐
- NSDate的一个分类,判断是否是今天,昨天,今年,获得与当前时间的差距,返回一个只有年月日的日期
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- ios中处理时间是否是今天,昨天,今年
- 判断是否为今年、是否为今天、是否为昨天,比较当前时间和from时间的差值
- 判断是否为今年、是否为今天、是否为昨天,比较当前时间和from时间的差值
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- IOS判断日期是今天,昨天还是明天,时间戳转时间,时间转时间戳
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- js 根据已知的时间,判断是否是今天,明天,昨天,后天
- iOS 判断时间(昨天,今天,明天)
- iOS如何判断一个日期是否是今天,昨天,前天?
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内
- ios中利用NSDateComponents、NSDate、NSCalendar判断当前时间是否在一天的某个时间段内。
- iOS中利用NSDateComponents,NSDate,NSCalendar判断当前时间是否在一天的某个时刻段内
- Android 判断获取的时间是否是今天、昨天
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- IOS-NSDate之今天,昨天,这周,这个月,上个月