NSDate添加常用Category,用于得到是否是今天,昨天等
来源:互联网 发布:索尼rx100一代知乎 编辑:程序博客网 时间:2024/04/30 16:40
1、使用说明
NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss.S"; NSDate *createDate = @"从接口中得到的时间"; if (createDate.isThisYear) { if (createDate.isToday) { // 今天 NSDateComponents *cmps = [createDate deltaWithNow]; if (cmps.hour >= 1) { // 至少是1小时前发的 status.created_at = [NSString stringWithFormat:@"%ld小时前", (long)cmps.hour]; } else if (cmps.minute >= 1) { // 1~59分钟之前发的 status.created_at = [NSString stringWithFormat:@"%ld分钟前", (long)cmps.minute]; } else { // 1分钟内发的 status.created_at = @"刚刚"; } } else if (createDate.isYesterday) { // 昨天 fmt.dateFormat = @"昨天 HH:mm"; status.created_at = [fmt stringFromDate:createDate]; } else { // 至少是前天 fmt.dateFormat = @"MM-dd HH:mm"; status.created_at = [fmt stringFromDate:createDate]; } } else { // 非今年 fmt.dateFormat = @"yyyy-MM-dd"; status.created_at = [fmt stringFromDate:createDate]; }
2、实现细节
NSDate+Estension.h文件
@interface NSDate (Estension)/** * 是否为今天 */- (BOOL)isToday;/** * 是否为昨天 */- (BOOL)isYesterday;/** * 是否为今年 */- (BOOL)isThisYear;/** * 返回一个只有年月日的时间 */- (NSDate *)dateWithYMD;/** * 获得与当前时间的差距 */- (NSDateComponents *)deltaWithNow;@end
NSDate+Estension.m文件
@implementation NSDate (Estension)/** * 是否为今天 */- (BOOL)isToday{ 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];}/** * 是否为今年 */- (BOOL)isThisYear{ NSCalendar *calendar = [NSCalendar currentCalendar]; int unit = NSCalendarUnitYear; // 1.获得当前时间的年月日 NSDateComponents *nowCmps = [calendar components:unit fromDate:[NSDate date]]; // 2.获得self的年月日 NSDateComponents *selfCmps = [calendar components:unit fromDate:self]; return nowCmps.year == selfCmps.year;}- (NSDateComponents *)deltaWithNow{ NSCalendar *calendar = [NSCalendar currentCalendar]; int unit = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; return [calendar components:unit fromDate:self toDate:[NSDate date] options:0];}@end
0 0
- NSDate添加常用Category,用于得到是否是今天,昨天等
- 判断NSDate是昨天,今天,星期几等
- NSDate 判断日期是今天还是昨天
- 判断日期是否是明天,今天,昨天
- NSDate的一个分类,判断是否是今天,昨天,今年,获得与当前时间的差距,返回一个只有年月日的日期
- iOS - NSDate分类-判断时间是否为今天,昨天,一周内,年月日
- ios中处理时间是否是今天,昨天,今年
- Android 判断获取的时间是否是今天、昨天
- iOS如何判断一个日期是否是今天,昨天,前天?
- IOS——NSDate昨天、今天、明天
- NSString 转NSDate 之昨天、今天、明天
- 今天之前是昨天
- 今天是昨天的明天
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- IOS-NSDate之今天,昨天,这周,这个月,上个月
- 培训班模块工作总结
- 特立独行的在输入法弹起的时候将指定控件往上推
- cocos2d-x IOS 和Android播放视频(包括网络视频)
- Makefile总结
- could not get next sequence value
- NSDate添加常用Category,用于得到是否是今天,昨天等
- 关于C++中的引用
- 迁移到Java8示例之filter
- 读书笔记数据科学入门————Python快速入门
- zmap安装实践
- Gson解析Json工具类
- spring4的定时任务
- 软件工程视频总结(二)
- BMP位图数据