天天看点

oc 知识总结五(NSDate)

NSDate:用来处理日期的类 NSDateFormatter:用来处理日期与字符床之间的转换

1、日期类的常用处理方法

(1)

(2)NSLocale代表一个语言、国际环境,比如大陆的简体中文,就可以通过NSLocale对象来代表。同样的一个日期,在不同的语言、国际环境下,显示出来的字符串是不同的。

oc 知识总结五(NSDate)

1>输出格林威治时间 代码部分:

        //创建当前日期对象

        NSDate *nowDate=[NSDatedate];

        NSLog(@"当前日期:%@",nowDate);//格林威治时间

输出结果:

oc 知识总结五(NSDate)

2>输出北京时间 代码部分:        NSDate *nowDate=[NSDatedate];

       NSLog(@"%@",[nowDatedescriptionWithLocale:[NSLocalecurrentLocale]]);//中国标准日期,本地时间

输出结果:

oc 知识总结五(NSDate)

2、创建日期对象的方法

       // 方法一:创建当前日期对象

        NSDate *nowDate=[NSDate date];

        NSLog(@"当前日期:%@",nowDate);//格林威治时间

        NSLog(@"%@",[nowDate descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期,本地时间

        //方法二:根据与当前时间的间隔秒数创建日期

        NSDate *threeMinuteAge=[NSDate dateWithTimeIntervalSinceNow:-60*60*3];

        NSLog(@"%@",[threeMinuteAge descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期

        //方法三:根据与1970.1.1的时间间隔秒数创建日期

        NSDate *date19700102=[NSDate dateWithTimeIntervalSince1970:24*60*60];

        NSLog(@"%@",[date19700102 descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期,本地时间

        //方法四:根据与2001.1.1的时间间隔秒数创建日期(0点开始)

        NSDate *date20010102=[NSDate dateWithTimeIntervalSinceReferenceDate:24*60*60];

        NSLog(@"%@",date20010102);//格林威治时间

        //方法五:根据指定日期的时间间隔秒数创建日期

        NSDate *dateThreeHoursLater=[NSDate dateWithTimeInterval:3*60*60 sinceDate:date20010102];

        NSLog(@"%@",dateThreeHoursLater);//格林威治时间

        //方法六:创建日期对象的方式:根据日期格式器和对应的日期字符串创建日期对象

       //日期格式器NSDateFormatter(字符串-》日期或者日期-》字符串)

        //想要得到的格式是:2015-08-06 13:21:35  yyyy-MM-dd HH:mm:ss

        //创建一个日期格式器

        NSDateFormatter *formatter=[[NSDateFormatter alloc]init];

        //设置想要的格式(指定格式器的处理格式)

        [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

        //将日期按照指定格式转换成字符串(stringFromDate)

        NSString *dateStr=[formatter stringFromDate:nowDate];

        NSLog(@"datastr=%@",dateStr);

        //方法六:创建日期对象的方式:根据日期格式器和对应的日期字符串创建日期对象

        NSDate *dateFormatter=[formatter dateFromString:@"2015-08-06 13:21:35" ];

        NSLog(@"date=%@",dateFormatter);

输出结果:

oc 知识总结五(NSDate)

3、日期的比较

(1)日期的比较1、(NSCompare)有三种结果:1. NSOrderedSame 等于2. NSOrderedDescending 大于3.  NSOrderedAscending 小于

       NSComparisonResult result=[date19700102 compare:date20010102];

        if(result==NSOrderedSame){

            NSLog(@"date19700102=date20010102");

        }else if(result==NSOrderedDescending){

            NSLog(@"date19700102>date20010102");

        }else{

           NSLog(@"date19700102<date20010102");

        }

(2)日期的比较2、isEqualToDate laterDate earlierDate

4、获取当前的年、月、日、时、分、秒

(1)方式一:

//        当前年份

//        当前月份

//        当前日

//        当前时

//        当前分

//        当前秒

        [formatter setDateFormat:@"yyyy"];

        NSString *year=[formatter stringFromDate:nowDate];

        NSLog(@"year=%@",year);

        [formatter setDateFormat:@"MM"];

        NSString *month=[formatter stringFromDate:nowDate];

        NSLog(@"month=%@",month);

        [formatter setDateFormat:@"dd"];

        NSString *day=[formatter stringFromDate:nowDate];

        NSLog(@"day=%@",day);

        [formatter setDateFormat:@"HH"];

        NSString *hour=[formatter stringFromDate:nowDate];

        NSLog(@"hour=%@",hour);

        [formatter setDateFormat:@"mm"];

        NSString *minute=[formatter stringFromDate:nowDate];

        NSLog(@"minute=%@",minute);

        [formatter setDateFormat:@"ss"];

        NSString *second=[formatter stringFromDate:nowDate];

        NSLog(@"second=%@",second);

输出结果:

oc 知识总结五(NSDate)

(2)方式2:

       NSDate *nowDate=[NSDatedate];

        NSCalendar *cal=[NSCalendar currentCalendar];

        unsigned int unitFlags=NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;

        NSDateComponents *n=[cal components:unitFlags fromDate:nowDate];

        NSInteger nowYear=[n year];

        NSInteger nowMonth=[n month];

        NSInteger nowDay=[n day];

        NSInteger nowHour=[n hour];

        NSInteger nowMinute=[n minute];

        NSInteger nowSecond=[n second];

        NSLog(@"年:%ld,月:%ld,日:%ld,时:%ld,分:%ld,秒:%ld",nowYear ,nowMonth,nowDay,nowHour,nowMinute,nowSecond);

输出结果:

oc 知识总结五(NSDate)

5、时间戳:(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术的一种变种的应用。

某一日期到1970年的秒数的大小,称为该日期的时间戳。

oc 知识总结五(NSDate)

6、日期格式器(NSDateFormatter):功能就是完成NSDate与NSString之间的转换。

oc 知识总结五(NSDate)

7、日期格式化说明符号对照表

oc 知识总结五(NSDate)