码迷,mamicode.com
首页 > 其他好文 > 详细

OC学习-NSDate

时间:2015-07-23 19:53:59      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:oc   nsdate   基础   

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

版权声明:本文为博主原创文章,转载请注明原文地址

OC学习-NSDate

标签:oc   nsdate   基础   

原文地址:http://blog.csdn.net/u011752406/article/details/47026971

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!