我们项目启动的时候要弹出一个广告窗口,很简单的一个功能,服务器的判断一下满足条件,即返回数据,客户端判断数据部位NULL,则弹出弹窗
但是老板说,这个要时间短弹出,每天的中午12点到下午2点不能弹出来
这这这,有点坑我们吧,每天存一个key,有点坑吧
仔细想想,没有必要啊,这就是考验我们对时间的操作,代码实现如下:

代码实现
#pragma mark  --  判断是否弹出广告
- (BOOL)isLoadAdvertIn
{
//当前时间戳
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970]; NSTimeInterval time00 = [GDDateUtil setCurrentlyDaySetHour:00 setMinute:00 setSec:00];//当前天00点的时间戳
NSTimeInterval time12 = [GDDateUtil setCurrentlyDaySetHour:12 setMinute:00 setSec:00];//当前天12点的时间戳
NSTimeInterval time14 = [GDDateUtil setCurrentlyDaySetHour:14 setMinute:00 setSec:00];//当前天14点的时间戳
NSTimeInterval time24 = [GDDateUtil setCurrentlyDaySetHour:24 setMinute:00 setSec:00];//当前天24点的时间戳 if (interval > time00 && interval < time12) {//时间段是00 - 12 点之间
//这样判断当前时间绝对是00点以后 interval > time00
//interval < time12 只要符合 则当前时间就在上午12点之前 if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"KamYES"] isEqualToString:[NSString stringWithFormat:@"%@Kam",[GDDateUtil stringFromDateSetDateFormat:@"yyMMdd"]]]) {
//在NSUserDefaults 取值KamYES 判断今天上午是否启动过 [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%@Kam",[GDDateUtil stringFromDateSetDateFormat:@"yyMMdd"]] forKey:@"KamYES"];
//满足这个条件说明没有启动过,将今天的值存放,则返回YES
return YES;
}
return NO;
}else if (interval > time14 && interval < time24){//时间在12 - 24点之间
//interval < time24 当前的时间绝对要小于24点,如果大于了 则是另外一天,因为[GDDateUtil setCurrentlyDaySetHour:xx setMinute:xx setSec:xx]方法是获取当天的时间,所以不会出现interval>time24的情况
//interval > time14 说明当前时间为14点之后 if (![[[NSUserDefaults standardUserDefaults] objectForKey:@"KpmYES"] isEqualToString:[NSString stringWithFormat:@"%@Kpm",[GDDateUtil stringFromDateSetDateFormat:@"yyMMdd"]]]) {
//在NSUserDefaults 取值KpmYES 判断今天下午是否启动过 [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%@Kpm",[GDDateUtil stringFromDateSetDateFormat:@"yyMMdd"]] forKey:@"KpmYES"];
//满足这个条件说明没有启动过,将今天的值存放,则返回YES
}
return NO;
}
return NO;
}

里面注释写的很清楚了吧,我可能代码里面有个类目,代码如下:

获取当前天数时间几点几分的时间戳

[GDDateUtil setCurrentlyDaySetHour:xx setMinute:xx setSec:xx]

/**
* 获取当前天数时间几点几分的时间戳
*
* @return return 时间戳
*/
+ (NSTimeInterval)setCurrentlyDaySetHour:(NSInteger)hour setMinute:(NSInteger)minute setSec:(NSInteger)sec
{
if (hour == 24) {//如果是24时,则是第二天的00点,所以做细微处理
hour = 23;
minute = 59;
sec = 59;
}
NSCalendar *greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
[greCalendar setTimeZone: timeZone]; NSDateComponents *dateComponents = [greCalendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]]; // 定义一个NSDateComponents对象,设置一个时间点
NSDateComponents *dateComponentsForDate = [[NSDateComponents alloc] init];
[dateComponentsForDate setDay:dateComponents.day];
[dateComponentsForDate setMonth:dateComponents.month];
[dateComponentsForDate setYear:dateComponents.year];
[dateComponentsForDate setHour:hour];
[dateComponentsForDate setMinute:minute];
[dateComponentsForDate setSecond:sec]; NSDate *dateFromDateComponentsForDate = [greCalendar dateFromComponents:dateComponentsForDate]; return [dateFromDateComponentsForDate timeIntervalSince1970];
}
获取时间,并转换为字符串

[GDDateUtil stringFromDateSetDateFormat:xxx]

/**
* 获取时间,并转换为字符串
*
* @return return 返回字符串
*/
+ (NSString *)stringFromDateSetDateFormat:(NSString *)formatString
{
NSDate *date =[NSDate date];
NSDateFormatter *formater = [[NSDateFormatter alloc] init];
[formater setDateFormat:formatString];//设置时间显示的格式,此处使用的formater格式要与字符串格式完全一致,否则转换失败
NSString *dateStr = [formater stringFromDate:date];//将日期转换成字符串
return dateStr;
}

链接:http://www.jianshu.com/p/674bf1b42cd7

感谢分享

iOS 特定时间内才做某件事,有类似奇葩需求可以参考的更多相关文章

  1. 编写高质量代码改善C#程序的157个建议——建议144:一个方法只做一件事

    建议144:一个方法只做一件事 “单一职责原则”(SRP)要求每一个类型只负责一件事情.我们将此概念扩展到方法上,就变成了:一个方法只做一件事. 回顾上一建议的代码,LocalInit和RemoteI ...

  2. 安装linux mint后要做20件事

    Linux Mint 17 Qiana Cinnamon Linux Mint 17已经发布,定名为Qiana.Mint是Linux最佳发行版之一,它定位于桌面用户,关注可用性和简洁.它携带了风格迥异 ...

  3. Functions should do one thing一个函数应该只做一件事

    if you take nothing else away from this guide other than this, you'll be ahead of many developers. 如 ...

  4. Qt Model/View理解(二)---构造model(细心研读,发现超简单,Model就是做三件事:返回行数量、列数量、data如何显示。然后把model与view联系起来即可,两个例子都是如此)good

    数据是一个集合,显示也是一个集合.例如一篇<西游记>的文章,所有的文字就是数据集合,展示方式就是显示的集合,可以以书本的形式,也可以以电纸书的形式,更可以用视频的方式展现. 下面是将一个二 ...

  5. 让一个端口同时做两件事:http/https和ssh

    相信很多人都在YY:能不能让80端口分析连接协议,如果是http协议就让服务器交给http服务程序(如Apache.Nginx等)处理,如果是ssh协议就交给ssh服务程序(如OpenSSH Serv ...

  6. 如果你的eclipse在每次run或debug时都莫名其妙的做一件事

    新项目,使用Ant打war包.结果写完了Ant以后,包是打好了,却使eclipse以后每次run或debug时都莫名其妙地自动先执行这个Ant, 让人十分苦恼. 其实,是你的eclipse设置出了问题 ...

  7. head first c 笔记&lt;3&gt; 之做一件事并把它做好

    1.标准输入.输出与重定向 scanf()和printf()分别为标准输入输出.默认的会从键盘得到数据,在显示器输出数据,是fscanf()和fprintf()函数的特例. 我们也能够用重定向来改变默 ...

  8. BAT大神推荐:看懂英文文档,每天只需要10分钟做这件事……

    程序员这个行业是很特殊的.之所以说特殊,就是因为它所有的技术大多来自欧美,所以最主流,最新鲜,最正确的技术文章都是英文,遗憾的是,大部分还没有译本. 有些译文还比较差.与其等待别人的翻译,不如直接阅读 ...

  9. 关于 Java Collections API 您不知道的 5 件事,第 1 部分

    定制和扩展 Java Collections Java™ Collections API 远不止是数组的替代品,虽然一开始这样用也不错.Ted Neward 提供了关于用 Collections 做更 ...

随机推荐

  1. 如何通过 iframe 共享 jQuery $.data?

    index.html <div id="div1"> </div> <iframe src="ajax2.html" name=& ...

  2. 15款不容错过的前端开发Javascript和css类库 - 2017版本~

    前端的JS和CSS类库日新月异, 在今天这篇介绍中,我们将精挑细选15款超棒的JS/CSS类库, 希望大家在开发过程中会觉得有帮助~ Core UI 基于Bootstrap4的一套UI类库, Core ...

  3. Android Activity 及其子类

    本文内容 ListActivity TabActivity LauncherActivity ExpandableListActivity PerferenceActivity 这些类都继承 Acti ...

  4. 多模块Maven项目如何使用javadoc插件生成文档

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   需求 最近要对一个项目结构如下的Maven项目生成JavaDoc文档. Project                  ...

  5. 轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)

    轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级) 实验室所在的课题组以研究云计算为主,但所有的研究都是在基于理论的凭空想像,缺少分布式环境的平台的实践,云计算神马的都是浮云了.因此,我 ...

  6. MySql 分区 分库 分表

    ubuntu下MySQL配置和管理:http://www.2cto.com/database/201306/222510.html mysql分表,分区的区别和联系:http://my.oschina ...

  7. NSMutableURLRequest Http 请求 同步 异步

    #pragma mark get country code//同步 -(void)getFKjsonCountryCode { dispatch_async(dispatch_get_global_q ...

  8. SQL Server配置支持中文

  9. SpringMVC,Ehcache

    来自:http://blog.csdn.net/jadyer/article/details/12257865 http://jinnianshilongnian.iteye.com/blog/200 ...

  10. from flask.ext.wtf import Form导入报错

    问题来源: 在学习Flask网上教程(PS:中文版教程链接,英文版教程其中代码是对的,运行没错误,我为了看的快一些,所以就直接看的中文版>~<,英文版教程链接)时,使用如下代码: from ...