美文网首页iOS
iOS 每天某些时间点做某些事情

iOS 每天某些时间点做某些事情

作者: 1ace156a39cd | 来源:发表于2017-01-07 15:18 被阅读281次

广告

欢迎大家一起交流 QQ群 139852091 公众号

我是jpg

开篇

我们项目启动的时候要弹出一个广告窗口,很简单的一个功能,服务器的判断一下满足条件,即返回数据,客户端判断数据部位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;
}

好了,功能完成,有需要得拿走

广告

欢迎大家一起交流 QQ群 139852091 公众号

我是jpg

相关文章

  • iOS 每天某些时间点做某些事情

    广告 欢迎大家一起交流 QQ群 139852091 公众号 开篇 我们项目启动的时候要弹出一个广告窗口,很简单的一...

  • 某些相遇又错过了某些事情

    最近公司组织去深圳玩,参加丛林电音节,啊啊啊我的爱~但因为不确定因素,而一直确定不下来,说真的很想去,我是可以去的...

  • 如果过去的某个时间点停留,你是否想过另外一个自己会是怎样?

    其实,我们每个人都曾幻想过,如果过去的某个时间点停留,某些人没有出现,某些事情没有发生,或者某些结局有所改...

  • 生活不会亏待努力的你

    生活在继续,时光不停留。我们每天都需要花费时间做每天要做的事情,千万别占用有限的时间在某些不开心的事情上苦...

  • 浩言正语420:20190701

    浩言正语420:每天程序化地工作,波澜不惊的生活,需要一点仪式感。在某些特定的日子里,在某些特殊的时间里,做一些有...

  • 某些

    西安的秋天到了 今天是霜降 也是我来西安离开深圳七七八八算二个月十三天了 之前的那种沮丧和不安也渐渐散去因为习惯 ...

  • 某些

    西安的秋天到了 今天是霜降 也是我来西安离开深圳七七八八算二个月十三天了 之前的那种沮丧和不安也渐渐散去因为习惯 ...

  • 某些

    就很羡慕一些人。从心里的羡慕。 你们都活成了我想要的模样。你们过的都是我想要的生活。就很羡慕。 你们阳光活泼,你们...

  • 某些时间的碎片

  • 某些事情从此不再有

    几年前,我是混penbbs的,号还被封了。每天看看别人的钢笔,了解钢笔的区别,每天晚上守着交易区等待有差价的钢笔出...

网友评论

    本文标题:iOS 每天某些时间点做某些事情

    本文链接:https://www.haomeiwen.com/subject/rgjfbttx.html