NSDate 与 NSDateFormatter
NSDate
NSDate的使用
+date方法
- NSDate是用于处理日期和时间的基础类
- 使用+date方法
NSDate *date = [NSDate date];
NSLog(@"%@",date);
打印结果:
2015-07-23 17:49:50.151 OC07_NSDate[3518:199911] 2015-07-23 09:49:50 +0000
注意:+date获取的时间,无论在哪个区,都是打印相对应的零时区的时间
获取当前时区
// 先获取一下当前所在时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSLog(@"%@",zone);
结果:
2015-07-23 17:52:02.218 OC07_NSDate[3539:201259] Asia/Shanghai (GMT+8) offset 28800
获取当前与0时区相差的秒数
(代码前后关联,zone和date都是前面代码定义的)
NSInteger seconds = [zone secondsFromGMTForDate:date];
NSLog(@"%ld",seconds);
结果:
2015-07-23 17:52:02.218 OC07_NSDate[3539:201259] Asia/Shanghai (GMT+8) offset 28800
通过相差的秒数获取现在的时间
NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:28800];
NSLog(@"%@",localDate);
结果:
2015-07-23 17:57:28.077 OC07_NSDate[3572:203747] 2015-07-23 17:57:28 +0000
时间间隔
- 对应的类型为double
计算两个对象的时间间隔
NSTimeInterval interval = [localDate timeIntervalSinceDate:date];
NSLog(@"%g",interval);
结果:
2015-07-23 18:01:16.854 OC07_NSDate[3596:205646] 28800
代码练习
计算当前时间和固定时间的差值,如果60s内,输出刚刚,如果在60-3600秒内,输出,分组前,如果3600秒外,输出xx小时前
NSDate *currentDate = [NSDate date];
NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:10000];
NSTimeInterval interval = [date2 timeIntervalSinceDate:currentDate];
if (interval < 60) {
NSLog(@"just now");
}else if(interval >= 60 && interval <=3600){
NSLog(@"%ld分钟",(NSInteger)interval / 60);
}else if(interval > 3600 && interval <= 3600 * 24){
NSLog(@"%ld小时", (NSInteger)interval / 3600);
}
NSDateFormatter
NSDateFormatter是iOS中的日期格式类,功能是实现NSString和NSDate的互转。
NSDate -> NSString
NSDate *date = [NSDate date];
NSString *dateStr =[NSString stringWithFormat:@"%@",date];
NSLog(@"%@",dateStr);
时间的格式
yyyy-MM-dd
y代表年
M 月
d 日
HH-mm-ss
H 小时(24小时)
m 分钟
s 秒
代码:
// 先设置一下时间的格式,要转换的时间要和格式相吻合
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 19:18:35.673 OC07_NSDate[3720:225797] 2015-07-23 19:18:35
NSString-> NSDate
代码:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *timeStr = @"2015-07-23 17:21:20";
NSDate *date = [formatter dateFromString:timeStr];
NSLog(@"%@",date);
结果:
2015-07-23 19:20:24.225 OC07_NSDate[3754:226900] 2015-07-23 09:21:20 +0000
版权声明:本文为博主原创文章,转载请注明原文地址
时间: 2024-11-01 10:21:48