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、日期格式化说明符号对照表