对时间处理,在开发时,时常碰到。一般有获取具体的年月日和星期,两个不同时间的差,某一天的前一天或后一天等 .现在只介绍获取具体的年月日和星期,及某一天的前一天或后一天的方法;

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

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

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

代码如下:

NSDate *nowDate = [NSDate date];    //这是当前的时间,
    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,首先也是设置属性,和上面一样;用到最主要的方法是[comps setHour:+24];+24表示获取下一天,-24表示获取前一天;还有[comps setMinute:0]和[comps setSecond:0]都要;

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

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

代码如下:

NSCalendar *calendar = [NSCalendar currentCalendar];
    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:comps toDate:showDate options:0];   //showDate表示某天的date,nowDate表示showDate的前一天或下一天的date

IOStime处理的更多相关文章

随机推荐

  1. CSS animation-timing-function 属性中的 steps() 与 step-start,step-end

    steps() 设置间隔参数,可以实现分步过渡 第一个参数指定了时间函数中的间隔数量(必须是正整数)第二个参数可选,接受 start 和 end 两个值,指定在每个间隔的起点或是终点发生阶跃变化,默认 ...

  2. CGAffineTransform属性

    transform我们一般称为形变属性,其本质是通过矩阵变化改变控件的大小.位置.角度等,这里我们通过一个例子来看一下具体的操作,在下面的例子中我们也会看到UIImageView控件的常用操作. - ...

  3. I.MX6 u-boot 2009 lvds hdmi lcd 补丁

    /************************************************************************* * I.MX6 u-boot 2009 lvds ...

  4. 使用pngcrush压缩png图片

    写在前面:         Pngcrush是一个优化的PNG(便携式网络图形)文件.它可以运行在MSDOS窗口中一个命令行,或从UNIX或LINUX命令行.其主要目的是为了 减少PNG IDAT数据 ...

  5. Meta标签中的format-detection属性及含义(转)

    一.Meta标签中的format-detection属性及含义 意为:格式检测 或许你会有这样的经历:当你在制作手机端的页面中,点击了没有加任何链接的格式的数字时,这时手机会进行自动拔号提示操作! 禁 ...

  6. 【旧文章搬运】遍历EPROCESS中的ActiveProcessLinks枚举进程

    原文发表于百度空间,2008-7-25========================================================================== 前面对PEB ...

  7. JDK7中匿名内部类中使用局部变量要加final,JDK8中不需要,但jdk会默认加上final

    今天看书的时候看到了局部内部类,书上说局部内部类可以访问局部变量,但是必须是final的.因为局部变量在方法调用之后就消失了,使用final声明的话该局部变量会存入堆中,和内部类有一样的声明周期.但是 ...

  8. ccflow汇总帖

    视频教程学习 公司电脑路径; E:\开源工作流\ccflow佳怡物流版\ccflow\doc cclfow的码云地址: https://gitee.com/opencc/ccflow 在线demo演示 ...

  9. POJ3186【区间DP】

    题意: 每次只能取两端,然后第 i 次取要val[ i ]*i,求一个最大值 一切都是错觉[读者省略此段] 这道题目一开始想的就是记忆化搜索,然后太天真了?好像是,一开始用一维dp[ i ]直接代表一 ...

  10. 国产spfa瞎几把嗨

    //在各种不利的因素下,我居然就这么水过了这题最短路,然而还wa了一次,因为路是双向的... //这题姿势很多啊,但自从会了国产spfa就是最短路能搞的就是spfa,优点太多了!!! //也是瞎几把打 ...