NSDate 是一个日期的类
创建一个date
*date 获取的时间无论是在哪个时区,都是打印相对应的零时区的时间
NSDate *date =[NSDate date ];
NSLog(@"%@", date);
// 结果:2015-07-23 16:04:00.431 OC07_NSDate[1430:100568] 2015-07-23 08:04:00 +0000
获取一下当前所在的时区
NSTimeZone *zone =[NSTimeZone systemTimeZone];
NSLog(@"%@",zone);
// 结果:2015-07-23 16:03:27.180 OC07_NSDate[1422:100218] Asia/Shanghai (GMT+8) offset 28800
获取一下和0时区相差的秒数
NSInteger seconds =[zone secondsFromGMTForDate:date];
NSLog(@"%ld", seconds);
// 结果: 2015-07-23 15:59:40.371 OC07_NSDate[1406:99223] 28800
通过相差的秒数,能获取到现在的时间
NSDate *localDate =[NSDate dateWithTimeIntervalSinceNow:seconds];
NSLog(@"%@",localDate);
NSTimeInterval:时间间隔
NSTimeInterval:对应的是double类型
NSTimeInterval计算两个时间对象的时间间隔
NSTimeInterval interval =[tomorrowDate timeIntervalSinceDate:date];
NSLog(@"%g",interval);
// 结果:2015-07-23 16:21:11.947 OC07_NSDate[1489:104070] 115200
例1
计算当前时间和⼀一个固定时间的差值,如果差值在60秒内,输出“刚 刚”,如果在60秒外3600秒内,输出“xx分钟前”,如果3600秒外, 3600*24秒内,输出“xx⼩小时前”。
NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:1000];
NSTimeInterval time =[date1 timeIntervalSinceDate:date];
NSLog(@"%ld",(NSInteger)time);
if (time <60) {
NSLog(@"刚刚");
}else if((time >=60)&&(time <3600)){
NSLog(@"%ld分钟之前",(NSInteger)time/60);
}else if((time >= 3600)&&(time<3600*24)){
NSLog(@"%g小时之前",time/3600);
}
把日期和字符串互相转换
NSDate -> NSString
NSDate *date =[NSDate date];
NSString *dateStr =[NSString stringWithFormat:@"%@",date];
NSLog(@"%@", dateStr);
//结果: 2015-07-23 17:13:16.597 OC07_NSDate[1730:117413] 2015-07-23 09:13:16 +0000
字符串 -> NSDate
把时间又减掉8小时
NSString *timeStr =@"2015-7-23 17-18-10";
NSDate *date=[formatter dateFromString:timeStr];
NSLog(@"%@", date);
时间的格式
yyyy-MM-dd HH-mm-ss
H 24小时制,h 12小时制
先设置一下时间的格式,要转换的时间要和格式相吻合
NSDateFormatter *formatter =[[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSDate *date=[NSDate date];
通过格式,把指定的时间直接转换成NSString
通过这种方式,系统还会把时间切换到现在的时间
NSString *strDate =[formatter stringFromDate:date];
NSLog(@"%@",strDate);
结果:2015-07-23 17:16:11.551 OC07_NSDate[1747:118395] 2015-07-23 17-16-11