Object-C中对时间的处理

      一般有获取具体的年月日和星期,两个不同时间的差,某一天的前一天或后一天等;在这里我只介绍获取具体的年月日和星期,及某一天的前一天或后一天的方法;

      对时间的处理一般都会用到NSDate类和NSCalendar类两个类;

      获取当前的时间是:NSDate *nowDate = [NSDate date];获取具体的年月日就是对nowDate的处理;一般要用到NSCalendar类,首先是对NSCalendar的声明,再就是属性的设置,其中属性[calendar components:(...)];很重要;设置了属性就可以根据方法获取年月日,如int nowYear = [comps year];

       获取星期要先获取int nowWeek = [comps weekday];再对nowweek的值进行判断,值是从1到7,分别对应的星期是从星期天到星期六。

        代码如下:

  

    NSDate *nowDate = [NSDatedate];    //这是当前的时间,其实这里可以是任意时间
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *comps;
    comps = [calendar components:(NSYearCalendarUnit |NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit)fromDate:nowDate];
    int nowYear = [comps year];
    int nowMonth = [comps month];
    int nowDay = [comps day];
    int nowWeek = [comps weekday];
    NSString *weekStr = [[NSString alloc] init];
    switch (nowWeek) {
        case 1:
            weekStr= @"星期天";
            break;
        case 2:
            weekStr= @"星期一";
            break;
        case 3:
            weekStr= @"星期二";
            break;
        case 4:
            weekStr= @"星期三";
            break;
        case 5:
            weekStr= @"星期四";
            break;
        case 6:
            weekStr= @"星期五";
            break;
        case 7:
            weekStr= @"星期六";
            break;
    
        default:
            break;
    }
    NSLog(@"年:%d;月:%d;日:%d;%@",nowYear,nowMonth,nowDay,weekStr);

        某一天的前一天或后一天的方法:

        这里要用到的是NSCalendar,首先也是设置属性,和上面一样;用到最主要的方法是[compssetHour:+24];+24表示获取下一天,-24表示获取前一天;还有[comps setMinute:0]和[comps setSecond:0]都要;

         最后将calendar转换成NSdate;方法如下:

           

  NSDate *nowDate = [calendar dateByAddingComponents:comps toDate:showDateoptions:0];   //showDate表示某天的date,nowDate表示showDate的前一天或下一天的date


          代码如下:

  

    NSCalendar *calendar = [NSCalendarcurrentCalendar];
    NSDateComponents *comps;
    comps = [calendar components:(NSHourCalendarUnit |NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[[NSDate alloc] init]];

    [comps setHour:+24]; //+24表示获取下一天的date,-24表示获取前一天的date;
    [comps setMinute:0];
    [comps setSecond:0];
    NSDate *nowDate = [calendar dateByAddingComponents:compstoDate:showDate options:0];   //showDate表示某天的date,nowDate表示showDate的前一天或下一天的date


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值