NSDate:用來處理日期的類 NSDateFormatter:用來處理日期與字元床之間的轉換
1、日期類的常用處理方法
(1)
(2)NSLocale代表一個語言、國際環境,比如大陸的簡體中文,就可以通過NSLocale對象來代表。同樣的一個日期,在不同的語言、國際環境下,顯示出來的字元串是不同的。
1>輸出格林威治時間 代碼部分:
//建立目前日期對象
NSDate *nowDate=[NSDatedate];
NSLog(@"目前日期:%@",nowDate);//格林威治時間
輸出結果:
2>輸出中原標準時間 代碼部分: NSDate *nowDate=[NSDatedate];
NSLog(@"%@",[nowDatedescriptionWithLocale:[NSLocalecurrentLocale]]);//中國标準日期,本地時間
輸出結果:
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);
輸出結果:
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);
輸出結果:
(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);
輸出結果:
5、時間戳:(timestamp),通常是一個字元序列,唯一地辨別某一刻的時間。數字時間戳技術是數字簽名技術的一種變種的應用。
某一日期到1970年的秒數的大小,稱為該日期的時間戳。
6、日期格式器(NSDateFormatter):功能就是完成NSDate與NSString之間的轉換。
7、日期格式化說明符号對照表