OC中的NSDate类

概念

NSDate是Cocoa中用于处理日期和时间的基础类,该类封装了各种处理时间和日期的API(应用程序接口)。

NSDate

//初始化
//类初始化,获取系统当前时间(GMT 格林尼治时间,与北京时间相差8个小时,北京时间=GMT+8)

 NSDate *date1=[NSDate date];

//<#(NSTimeInterval)#>这是一个以秒为单位的时间戳,float类型
//这个语法表示获得一个以现在时间为参考,通过设置<#(NSTimeInterval)#>(可输入正负数,负数表示之前多少秒、正数表示之后多少秒),来得到一个之前或者之后的时间

NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:-120];

//从1970年开始,到时间戳的时间

    `NSDate *date3=[NSDate dateWithTimeIntervalSince1970:100];

//距离sincedate(设置的日期)<#(NSTimeInterval)#>时间戳的时间

     NSDate *date4=[NSDate dateWithTimeInterval:120  sinceDate:[NSDate date]];

//通过时间追加创建nsdate

    NSDate *date5=[date4 dateByAddingTimeInterval:120];

//日期比较
//两个日期的时间戳(时间差)

创建一个时间对象然后跟1970年进行比较,并输出两者时间的差值
        NSTimeInterval timeIterval=[[NSDate date] timeIntervalSince1970];
        NSLog(@"%f",timeIterval);
创建一个时间对象然后跟系统当前时间进行比较,并输出两者时间的差值   
        NSTimeInterval timeItervalSinceNow=[[NSDate date] timeIntervalSinceNow];
        NSLog(@"%f",timeItervalSinceNow);

//基于给到的时间,算出一个小时之前的时间

        NSDate *dateNow=[NSDate date];
        NSDate *dateHour=[dateNow dateByAddingTimeInterval:-3600];
        NSDate *dateB=[NSDate dateWithTimeInterval:-3600 sinceDate:dateNow];
        NSLog(@"%@",dateHour);
        NSLog(@"%@",dateB);

//判断两个时间是否相等,实例方法,通过对象调用

     BOOL b=[dateNow isEqualToDate:dateHour];
        if (b) {
            NSLog(@"dateB=dateHour");
        }  

//判断两个时间哪个是较早的日期

      NSDate *earlierDate=[dateNow earlierDate:dateHour];
        if ([dateHour isEqualToDate:earlierDate]) {
            NSLog(@"dateHour是较早的时间");
        }
        else{
            NSLog(@"dateNow是较早的日期");
        }

//判断较晚的日期

    NSDate *laterDate=[dateHour laterDate:dateNow];
        if ([dateHour isEqualToDate :laterDate]) {
            NSLog(@"dateHour是较晚的时间");
        }
        else{
            NSLog(@"dateNow是较晚的日期");
        }

//除了上面那种比较时间先后的方法,我们还可以是用compare方法,PS:compare 输出的是一个枚举

      NSComparisonResult result=[dateNow compare:dateHour];
        switch (result) {
            case NSOrderedAscending://前者比后者小
            {
                NSLog(@"dateNow<dateHour");
                break;
            }

            case NSOrderedSame://两者相同
            {
             NSLog(@"dateNow=dateHour");
                break;
            }

            case NSOrderedDescending ://前者比后者大
            {
                NSLog(@"dateNow>dateHour");
                break;
            }

            default:
                break;
        }    

//通过NSTimeInterval创建一个时间很方便,但是不直观,Foundation框架为此提供了NSCalendar类,NSCalendar类由更自然的日期组成,例如日、月、年等,可以使用NSDateComponents来对具体的日、月、年等参数进行赋值。
// NSCalendar类通过NSDateComponents和 NSCalendar(currentCalendar方法)来创建一个date

        NSCalendar *currentCalendar=[NSCalendar currentCalendar];
        NSDateComponents *components=[[NSDateComponents alloc]init];
        components.year=2016;
        components.month=8;
        components.day=12;
        components.hour=12;
        components.minute=15;
        components.second=30;
        NSDate *date8=[currentCalendar dateFromComponents:components];

//时区
// NSTimeZone
//列出所有的时区

    NSArray *array=[NSTimeZone knownTimeZoneNames ];

//指定名称参数创建一个时区

       NSTimeZone *timeZone=[NSTimeZone timeZoneWithName:@"Shanghai"];

//指定时区缩写 创建一个时区

        NSTimeZone *timeChina=[ NSTimeZone timeZoneWithAbbreviation:@"PRC"];

//如何将日期转成字符串
NSDateFormatter *dateFormatter=[NSDateFormatter new];
//设置时区,默认时区
dateFormatter.timeZone=[NSTimeZone defaultTimeZone];
//设置时间输出格式
//[dateFormatter setDateFormat:@”yyyy-MM-dd HH:mm:ss”];

       [dateFormatter setDateFormat:@"yyyy年MM月dd日HH时mm分ss秒"];
        NSString *str=[dateFormatter stringFromDate:[NSDate date]];

//将字符串转成日期

     NSString *str2=@"1970-1-1 10:00:00";
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSDate *date10=[dateFormatter dateFromString:str2];
        NSLog(@"%@",date10);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值