IOS开发 根据某个日期计算是星期几
2015-06-23 17:38
537 查看
在自己的项目中有这个需求,在网上找了下,没有找到理想的结果,就东拼西凑的把大家的想法,集合在一起,加上自己的想法,实现了这个功能。
温馨提示:测试了将来某个日期是星期几,未测试过去的某个日期是星期几
实现思路
大概的实现方式和大家分享下,有不对的地方欢迎大家留言指教,相互学习
首先计算 未来的 某个日期 和 当前日期相差天数
在获取当前是星期几(返回结果如下格式)
1--星期天
2--星期一
3--星期二
4--星期三
5--星期四
6--星期五
7--星期六
最后在当前星期 基础上 加上 相差天数,就获取未来那个日期所对应的星期(此处可以将 (相差天数 % 7),结果就更加明了相差的天数(结果是0,说明未来的某个日期的星期就是对应当前的星期),7代表的一周共7天
实现代码
代码中本人已经写了很详细的说明,在这里就一一单独说了,代码分为3段,如下
第一段代码:
第二段代码
计算2个日期相差天数Objective-C
第三段代码
获取当前是星期几Objective-C
本文为原创内容:来自本人博客(软曼网)http://www.ruanman.net/archives/7308.html
如发现csdn 有错位等情况,请访问原文地址查看,效果更佳
温馨提示:测试了将来某个日期是星期几,未测试过去的某个日期是星期几
实现思路
大概的实现方式和大家分享下,有不对的地方欢迎大家留言指教,相互学习
首先计算 未来的 某个日期 和 当前日期相差天数
在获取当前是星期几(返回结果如下格式)
1--星期天
2--星期一
3--星期二
4--星期三
5--星期四
6--星期五
7--星期六
最后在当前星期 基础上 加上 相差天数,就获取未来那个日期所对应的星期(此处可以将 (相差天数 % 7),结果就更加明了相差的天数(结果是0,说明未来的某个日期的星期就是对应当前的星期),7代表的一周共7天
实现代码
代码中本人已经写了很详细的说明,在这里就一一单独说了,代码分为3段,如下
第一段代码:
/** * 获取未来某个日期是星期几 * 注意:featureDate 传递过来的格式 必须 和 formatter.dateFormat 一致,否则endDate可能为nil * */ - (NSString *)featureWeekdayWithDate:(NSString *)featureDate{ // 创建 格式 对象 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; // 设置 日期 格式 可以根据自己的需求 随时调整, 否则计算的结果可能为 nil formatter.dateFormat = @"yyyy-MM-dd"; // 将字符串日期 转换为 NSDate 类型 NSDate *endDate = [formatter dateFromString:featureDate]; // 判断当前日期 和 未来某个时刻日期 相差的天数 long days = [self daysFromDate:[NSDate date] toDate:endDate]; // 将总天数 换算为 以 周 计算(假如 相差10天,其实就是等于 相差 1周零3天,只需要取3天,更加方便计算) long day = days >= 7 ? days % 7 : days; long week = [self getNowWeekday] + day; switch (week) { case 1: return @"星期天"; break; case 2: return @"星期一"; break; case 3: return @"星期二"; break; case 4: return @"星期三"; break; case 5: return @"星期四"; break; case 6: return @"星期五"; break; case 7: return @"星期六"; break; default: break; } return nil; }
第二段代码
计算2个日期相差天数Objective-C
/** * 计算2个日期相差天数 * startDate 起始日期 * endDate 截至日期 */ -(NSInteger)daysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate { NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; // 话说在真机上需要设置区域,才能正确获取本地日期,天朝代码:zh_CN dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //得到相差秒数 NSTimeInterval time = [endDate timeIntervalSinceDate:startDate]; int days = ((int)time)/(3600*24); int hours = ((int)time)%(3600*24)/3600; int minute = ((int)time)%(3600*24)/3600/60; if (days <= 0 && hours <= 0&&minute<= 0) { NSLog(@"0天0小时0分钟"); return 0; } else { NSLog(@"%@",[[NSString alloc] initWithFormat:@"%i天%i小时%i分钟",days,hours,minute]); // 之所以要 + 1,是因为 此处的days 计算的结果 不包含当天 和 最后一天\ (如星期一 和 星期四,计算机 算的结果就是2天(星期二和星期三),日常算,星期一——星期四相差3天,所以需要+1)\ 对于时分 没有进行计算 可以忽略不计 return days + 1; } }
第三段代码
获取当前是星期几Objective-C
// 获取当前是星期几 - (NSInteger)getNowWeekday { NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *comps = [[NSDateComponents alloc] init]; NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NS 4000 MinuteCalendarUnit | NSSecondCalendarUnit; NSDate *now = [NSDate date]; // 话说在真机上需要设置区域,才能正确获取本地日期,天朝代码:zh_CN calendar.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; comps = [calendar components:unitFlags fromDate:now]; return [comps weekday]; }
本文为原创内容:来自本人博客(软曼网)http://www.ruanman.net/archives/7308.html
如发现csdn 有错位等情况,请访问原文地址查看,效果更佳
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 如何成为一名专家级的开发人员
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- rm格式插入广告代码
- C#判断指定驱动器是否是Fat分区格式的方法
- C#判断指定分区是否是ntfs格式的方法
- C#实现判断图形文件格式的方法
- 使用nodejs开发cli项目实例
- nodejs开发微博实例
- Egret引擎开发指南之创建项目
- Photoshop HD Photo 文件格式插件汉化绿色版 下载
- jsp导出身份证到excel时候格式不对但以X结尾的却可以
- Android开发自学笔记(二):工程文件剖析
- 数据库的日期格式转换
- C# 设置系统日期格式的方法