当前时间显示
2016-05-13 17:55
323 查看
调用
实现
实现:
NSLog(@"%@",[self formateDate:@"2016-05-13 17:30" withFormate:@"YYYY-MM-dd HH:mm"]);
实现
/** 和当前时间比较 1)1分钟以内 显示 : 刚刚 2)1小时以内 显示 : X分钟前 3)今天或者昨天 显示 : 今天 09:30 昨天 09:30 4) 今年 显示 : 09月12日 5) 大于本年 显示 : 2013/09/09 */ - (NSString *)formateDate:(NSString *)dateString withFormate:(NSString *) formate { @try { //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:formate]; NSDate * nowDate = [NSDate date]; // 将需要转换的时间转换成 NSDate 对象 NSDate * needFormatDate = [dateFormatter dateFromString:dateString]; // 取当前时间和转换时间两个日期对象的时间间隔 // 这里的NSTimeInterval 并不是对象,是基本型,其实是double类型,是由c定义的: typedef double NSTimeInterval; NSTimeInterval time = [nowDate timeIntervalSinceDate:needFormatDate]; // 再然后,把间隔的秒数折算成天数和小时数: NSString *dateStr = @""; if (time <= 60) { // 1分钟以内的 dateStr = @"刚刚"; }else if(time <= 60*60){ // 一个小时以内的 int mins = time/60; dateStr = [NSString stringWithFormat:@"%d分钟前",mins]; }else if(time <= 60*60*24*2){ // 在两天内的 [dateFormatter setDateFormat:@"YYYY/MM/dd"]; NSString * need_yMd = [dateFormatter stringFromDate:needFormatDate]; NSString *now_yMd = [dateFormatter stringFromDate:nowDate]; [dateFormatter setDateFormat:@"HH:mm"]; if ([need_yMd isEqualToString:now_yMd]) { // 在同一天 dateStr = [NSString stringWithFormat:@"今天 %@",[dateFormatter stringFromDate:needFormatDate]]; }else{ // 昨天 dateStr = [NSString stringWithFormat:@"昨天 %@",[dateFormatter stringFromDate:needFormatDate]]; } }else { [dateFormatter setDateFormat:@"yyyy"]; NSString * yearStr = [dateFormatter stringFromDate:needFormatDate]; NSString *nowYear = [dateFormatter stringFromDate:nowDate]; if ([yearStr isEqualToString:nowYear]) { // 在同一年 [dateFormatter setDateFormat:@"MM月dd日"]; dateStr = [dateFormatter stringFromDate:needFormatDate]; }else{ [dateFormatter setDateFormat:@"yyyy/MM/dd"]; dateStr = [dateFormatter stringFromDate:needFormatDate]; } } return dateStr; } @catch (NSException *exception) { return @""; } }
更准确的方法
调用方法:[self formateDate:@"2016-05-30 21:57:46" withFormat:@"YYYY-MM-dd HH:mm:ss"];
实现:
- (void)formateDate:(NSString *)dateString withFormat:(NSString *) formate{ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:formate]; NSDate * nowDate = [NSDate date]; NSDate * needFormatDate = [dateFormatter dateFromString:dateString]; NSTimeInterval secondsPerDay = 24 * 60 * 60; NSDate *yearsterDay = [[NSDate alloc] initWithTimeIntervalSinceNow:-secondsPerDay]; NSTimeInterval thirdPerDay = 48 * 60 * 60; NSDate * qian = [[NSDate alloc] initWithTimeIntervalSinceNow:-thirdPerDay]; //假设这是你要比较的date:NSDate *yourDate = …… //日历 NSCalendar* calendar = [NSCalendar currentCalendar]; unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents* comp1 = [calendar components:unitFlags fromDate:needFormatDate]; NSDateComponents* comp2 = [calendar components:unitFlags fromDate:yearsterDay]; NSDateComponents * comp3 = [calendar components:unitFlags fromDate:qian]; if ( comp1.year == comp2.year && comp1.month == comp2.month && comp1.day == comp2.day) { NSLog(@"昨天"); } if (comp1.year == comp3.year && comp1.month == comp3.month && comp1.day == comp3.day) { NSLog(@"前天"); } }
相关文章推荐
- 记一次网站乱码处理方法
- WebAPI图片批量上传+修改图片名称
- Javascript飘窗代码
- Android Studio NDK 开发配置
- 简述Activity的启动流程(界面显示)
- ML2 Extension Manager
- hdu 4044 GeoDefense 树形DP+分组背包
- Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?
- cydiaSubstrate hook java/native 研究记录
- 高斯模糊算法
- System类及其getProterties( )和getProperty( )
- 概率图模型(一):贝叶斯网络
- React.js中的表单
- 揭秘LOGO设计流程!超详细的腾讯云LOGO 改版记录全过程
- IIS配置网站出现404
- 根据字体多少使UILabel自动调节尺寸
- 解释 int num = 5;(面试)
- 浙大 PAT Advanced level 1014. Waiting in Line (30)
- ToString()、Convert.ToString()、(string)、as string 的区别
- 列转行