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

对时间的处理一般都会用到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. ssm使用velocity模板语言

    1.在pom.xml里添加velocity模板语言支持的依赖 <!-- velocity模板语言支持包 --> <dependency> <groupId>org. ...

  2. Oracle:ORA-01790: expression must have same datatype as corresponding expression

    今天有现场报sql错误,错误sql语句 类似  select * from  tableA  where (exists  条件A   or exists 条件B), 单独执行  select * f ...

  3. Oracle:varchar2、nvarchar2 字段类型的区别

    一直对varchar2.nvarchar2 字段类型存储字符数不清楚,现测试如下: 创建TT测试表 测试脚本如下: insert into tt values('1111','1111');  --- ...

  4. 【转载】Android Studio简单设置

    界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Theme ,选择 Darcula 主题即可 ...

  5. 【Java】DateUtil(2)

    import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...

  6. I.MX6 AW-NB177NF p2p support

    /***************************************************************************** * I.MX6 AW-NB177NF p2 ...

  7. boost之timer

    1. timer类实现 #pragma once #include <ctime> #include <limits> class timer { public: timer( ...

  8. linux--安装phpcurl扩展

    在UBUNTU中直接用APT包管理工具安装: apt-get install curl libcurl3 libcurl3-dev php5-curl 安装好后重启Apache服务器就行了,如果还是不 ...

  9. JavaScript-Tool:jqgrid

    ylbtech-JavaScript-Tool:jqgrid jqGrid 是一个用来显示网格数据的jQuery插件,文档比较全面,附带中文版本. 1.返回顶部   2.返回顶部   3.返回顶部   ...

  10. c语言sscanf总结

    1函数原型 int scanf(const char *format,[,argument]...) extern int sscanf(_const char*_restrict_s,const c ...