Objective-C学习之 NSDate简单使用说明

一、NSDate初始化

// 获取当前日期
        NSDate *date = [NSDate date];
        
        // 打印结果: 当前时间 date = 2013-08-16 09:00:04 +0000
        NSLog(@"当前时间 date = %@",date);
        
        // 获取从某个日期开始往前或者往后多久的日期,此处60代表60秒,如果需要获取之前的,将60改为-60即可
        date = [[NSDate alloc] initWithTimeInterval:60 sinceDate:[NSDate date]];
        
        //打印结果:当前时间 往后60s的时间date = 2013-08-16 09:01:04 +0000
        NSLog(@"当前时间 往后60s的时间date = %@",date);

PS:测试时时间是下午5点,但是得到的当前时间却是上午9点,相差了8小时,是时区的问题

解决办法:

NSTimeZone *zone = [NSTimeZone systemTimeZone];
        
        NSInteger interval = [zone secondsFromGMTForDate: date];
        
        NSDate *localDate = [date  dateByAddingTimeInterval: interval];
        
        // 打印结果 正确当前时间 localDate = 2013-08-16 17:01:04 +0000
        NSLog(@"正确当前时间 localDate = %@",localDate);

二、NSDate与NSString的转换

/*---- NSDate与NSString----*/
        NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
        
        // 设置日期格式
        [dateFormatter setDateFormat:@"年月日 YYYY/mm/dd 时间 hh:mm:ss"];
        
        NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
        
        // 打印结果:dateString = 年月日 2013/10/16 时间 05:15:43
        NSLog(@"dateString = %@",dateString);
        
        
        // 设置日期格式
        [dateFormatter setDateFormat:@"YYYY-MM-dd"];
        
        NSString *year = [dateFormatter stringFromDate:[NSDate date]];
        
        // 打印结果:年月日 year = 2013-08-16
        NSLog(@"年月日 year = %@",year);
        
        // 设置时间格式
        [dateFormatter setDateFormat:@"hh:mm:ss"];
        
        NSString *time = [dateFormatter stringFromDate:[NSDate date]];
        
        // 打印结果:时间 time = 05:15:43
        NSLog(@"时间 time = %@",time);
三、日期的比较
/*----日期时间的比较----*/
        // 当前时间
        NSDate *currentDate = [NSDate date];
        
        // 比当前时间晚一个小时的时间
        NSDate *laterDate = [[NSDate alloc] initWithTimeInterval:60*60 sinceDate:[NSDate date]];
        
        // 比当前时间早一个小时的时间
        NSDate *earlierDate = [[NSDate alloc] initWithTimeInterval:-60*60 sinceDate:[NSDate date]];
        
        // 比较哪个时间迟
        if ([currentDate laterDate:laterDate]) {
            // 打印结果:current-2013-08-16 09:25:54 +0000比later-2013-08-16 10:25:54 +0000晚
            NSLog(@"current-%@比later-%@晚",currentDate,laterDate);
        }
        
        // 比较哪个时间早
        if ([currentDate earlierDate:earlierDate]) {
            // 打印结果:current-2013-08-16 09:25:54 +0000 比 earlier-2013-08-16 08:25:54 +0000 
            NSLog(@"current-%@ 比 earlier-%@ 早",currentDate,earlierDate);
        }
        
        if ([currentDate compare:earlierDate]==NSOrderedDescending) {
            // 打印结果
            NSLog(@"current 晚");
        }
        if ([currentDate compare:currentDate]==NSOrderedSame) {
            // 打印结果
            NSLog(@"时间相等");
        }
        if ([currentDate compare:laterDate]==NSOrderedAscending) {
            // 打印结果
            NSLog(@"current 早");
        }


转载于:https://my.oschina.net/joanfen/blog/153173

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值