天天看點

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)