iOS OC -date日期的类的一些关键用法

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值