OC中的NSDate类

来源:互联网 发布:c语言的main函数是什么 编辑:程序博客网 时间:2024/06/08 04:12

概念

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
原创粉丝点击