http://my.oschina.net/joanfen/blog/153173
一、NSDate初始化
01 | // 获取当前日期 |
02 | NSDate *date = [NSDate date]; |
03 | |
04 | // 打印结果: 当前时间 date = 2013-08-16 09:00:04 +0000 |
05 | NSLog(@"当前时间 date = %@",date); |
06 | |
07 | // 获取从某个日期开始往前或者往后多久的日期,此处60代表60秒,如果需要获取之前的,将60改为-60即可 |
08 | date = [[NSDate alloc] initWithTimeInterval:60 sinceDate:[NSDate date]]; |
09 | |
10 | //打印结果:当前时间 往后60s的时间date = 2013-08-16 09:01:04 +0000 |
11 | NSLog(@"当前时间 往后60s的时间date = %@",date); |
PS:测试时时间是下午5点,但是得到的当前时间却是上午9点,相差了8小时,是时区的问题
解决办法:
1 | NSTimeZone *zone = [NSTimeZone systemTimeZone]; |
2 | |
3 | NSInteger interval = [zone secondsFromGMTForDate: date]; |
4 | |
5 | NSDate *localDate = [date dateByAddingTimeInterval: interval]; |
6 | |
7 | // 打印结果 正确当前时间 localDate = 2013-08-16 17:01:04 +0000 |
8 | NSLog(@"正确当前时间 localDate = %@",localDate); |
二、NSDate与NSString的转换
01 | /*---- NSDate与NSString----*/ |
02 | NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init]; |
03 | |
04 | // 设置日期格式 |
05 | [dateFormatter setDateFormat:@"年月日 YYYY/mm/dd 时间 hh:mm:ss"]; |
06 | |
07 | NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; |
08 | |
09 | // 打印结果:dateString = 年月日 2013/10/16 时间 05:15:43 |
10 | NSLog(@"dateString = %@",dateString); |
11 | |
12 | |
13 | // 设置日期格式 |
14 | [dateFormatter setDateFormat:@"YYYY-MM-dd"]; |
15 | |
16 | NSString *year = [dateFormatter stringFromDate:[NSDate date]]; |
17 | |
18 | // 打印结果:年月日 year = 2013-08-16 |
19 | NSLog(@"年月日 year = %@",year); |
20 | |
21 | // 设置时间格式 |
22 | [dateFormatter setDateFormat:@"hh:mm:ss"]; |
23 | |
24 | NSString *time = [dateFormatter stringFromDate:[NSDate date]]; |
25 | |
26 | // 打印结果:时间 time = 05:15:43 |
27 | NSLog(@"时间 time = %@",time); |
01 | /*----日期时间的比较----*/ |
02 | // 当前时间 |
03 | NSDate *currentDate = [NSDate date]; |
04 | |
05 | // 比当前时间晚一个小时的时间 |
06 | NSDate *laterDate = [[NSDate alloc] initWithTimeInterval:60*60 sinceDate:[NSDate date]]; |
07 | |
08 | // 比当前时间早一个小时的时间 |
09 | NSDate *earlierDate = [[NSDate alloc] initWithTimeInterval:-60*60 sinceDate:[NSDate date]]; |
10 | |
11 | // 比较哪个时间迟 |
12 | if ([currentDate laterDate:laterDate]) { |
13 | // 打印结果:current-2013-08-16 09:25:54 +0000比later-2013-08-16 10:25:54 +0000晚 |
14 | NSLog(@"current-%@比later-%@晚",currentDate,laterDate); |
15 | } |
16 | |
17 | // 比较哪个时间早 |
18 | if ([currentDate earlierDate:earlierDate]) { |
19 | // 打印结果:current-2013-08-16 09:25:54 +0000 比 earlier-2013-08-16 08:25:54 +0000 |
20 | NSLog(@"current-%@ 比 earlier-%@ 早",currentDate,earlierDate); |
21 | } |
22 | |
23 | if ([currentDate compare:earlierDate]==NSOrderedDescending) { |
24 | // 打印结果 |
25 | NSLog(@"current 晚"); |
26 | } |
27 | if ([currentDate compare:currentDate]==NSOrderedSame) { |
28 | // 打印结果 |
29 | NSLog(@"时间相等"); |
30 | } |
31 | if ([currentDate compare:laterDate]==NSOrderedAscending) { |
32 | // 打印结果 |
33 | NSLog(@"current 早"); |
34 | } |
本文详细介绍了NSDate的基本使用方法,包括初始化NSDate对象、NSDate与NSString之间的相互转换以及如何进行日期比较。通过具体的代码示例展示了如何获取当前时间、计算相对时间、调整时间和时区,以及不同格式的日期字符串转换。
16

被折叠的 条评论
为什么被折叠?



