一般应用程序设置这一组的存在,比如夜间模式,如果你。从8:00-23:00。在这个当前的时间是如何推断出期间。主要的困难在于如何使用NSDate生成8:00时间和23:00时间。然后用当前时间,也许有足够的时间,以使控制。

这里有两种思路:

法1.使用NSDate生成当前时间,然后转为字符串,从字符串中取出当前的年、月、日,然后再拼上时、分、秒,然后再将拼接后的字符串转为NSDate,最后用当前的时间跟自己生成的俩NSDate的时间点比較。(该方法比較笨,也不难。但看起来有点太菜了,看上去不怎么规范)

法2.用NSDateComponents、NSCalendar确定俩固定的NSDate格式的时间,然后再进行比較(此方法比較装逼,事实上跟拼字符串的方法复杂度差不了多少。但看起来比較规范,像是大神写的)。

/**
* @brief 推断当前时间是否在fromHour和toHour之间。 如。fromHour=8,toHour=23时。即为推断当前时间是否在8:00-23:00之间
*/
- (BOOL)isBetweenFromHour:(NSInteger)fromHour toHour:(NSInteger)toHour
{
NSDate *date8 = [self getCustomDateWithHour:8];
NSDate *date23 = [self getCustomDateWithHour:23]; NSDate *currentDate = [NSDate date]; if ([currentDate compare:date8]==NSOrderedDescending && [currentDate compare:date23]==NSOrderedAscending)
{
NSLog(@"该时间在 %d:00-%d:00 之间!", fromHour, toHour);
return YES;
}
return NO;
} /**
* @brief 生成当天的某个点(返回的是伦敦时间,可直接与当前时间[NSDate date]比較)
* @param hour 如hour为“8”。就是上午8:00(本地时间)
*/
- (NSDate *)getCustomDateWithHour:(NSInteger)hour
{
//获取当前时间
NSDate *currentDate = [NSDate date];
NSCalendar *currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *currentComps = [[NSDateComponents alloc] init]; NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; currentComps = [currentCalendar components:unitFlags fromDate:currentDate]; //设置当天的某个点
NSDateComponents *resultComps = [[NSDateComponents alloc] init];
[resultComps setYear:[currentComps year]];
[resultComps setMonth:[currentComps month]];
[resultComps setDay:[currentComps day]];
[resultComps setHour:hour]; NSCalendar *resultCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
return [resultCalendar dateFromComponents:resultComps];
} PS:有一种更好的方式牛逼,随后不久,你说,加群:172158202

最新文章

  1. 【学】jQuery的源码思路3——添加事件及其他
  2. [moka同学笔记]Yii2.0循环查询并对结果累加求和
  3. python 内建函数setattr() getattr()
  4. DOM优化
  5. java为什么要设置环境变量
  6. hdu------2488Tornado(几何)
  7. Inno Setup 安装前卸载原程序
  8. jQuery Mask
  9. iOS9 升级设置
  10. C#_事件委托
  11. 下载android5.0源码
  12. 【Shell】单行注释和多行注释
  13. yslow V2 准则详细讲解
  14. F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数
  15. JAVA作业之动手动脑
  16. UI Recorder 安装教程(二)
  17. vim的查找与替换
  18. 分享一个CSS+JavaScript框架materializecss
  19. 数据契约(DataContract)里的DataMember特性
  20. ADO.net方法

热门文章

  1. vs修错小知识,相当于我自己的笔记,需要的人可以看下
  2. sql server 远程
  3. hidden change事件
  4. 9、Cocos2dx 3.0游戏开发找小三之工厂方法模式与对象传值
  5. git commit -s -m 注释中的换行 [加入signed-off-by
  6. C#取硬盘、CPU、主板、网卡的序号 ManagementObjectSearcher
  7. Lua中的require(转)
  8. Linux下一个Nginx安装步骤
  9. WdatePicker日期不能弹出框
  10. Java实现 Base64、MD5、MAC、HMAC加密(转)