NSDate的使用

         NSDate

        //OC中,Foundation框架为我们提供了强大的时间操作类‘NSDate’,该类封装了各种处理时间和日期的API

        

        //获取系统当前时间(GMT Greenwitch Mean Time 格林尼治标准时间,它与北京时间相差8个小时,北京时间 = GMT时间+8

        NSDate *date1 = [NSDate date];

        NSLog(@"%@",date1);

        

        //当前系统时间+100

        //NSTimeInterval 是一个以秒为单位的时间片,也叫时间戳。

        NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:100];

        NSLog(@"%@",date2);

        

        //197011+0

        NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:0];

        NSLog(@"%@",date3);

        

        //距离sinceDate日期timeInterval时间的时间

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

        NSLog(@"%@",date4);

        

        //通过时间追加创建NSDate,同样地返回seconds秒后的时间,如果这个seconds为负的话,就是seconds秒前的时间。

        NSDate *date5 = [date4 dateByAddingTimeInterval:100];

        NSLog(@"%@",date5);

        

        //日期比较

        //1.两个日期的时间间隔

        //将一个日期转换成时间戳,此日期是以1970年为标准

        NSTimeInterval timeInterval1970 = [[NSDate date] timeIntervalSince1970];

        NSLog(@"%f",timeInterval1970);

        

        //将一个时间转换为时间戳是以现在为标准的

        NSTimeInterval timeIntervalNow = [[NSDate date]timeIntervalSinceNow];

        NSLog(@"%f",timeIntervalNow);

        

        //2.日期的早晚比较

        NSDate *dateNow = [NSDate date];

        NSDate *dateHourAgo = [dateNow dateByAddingTimeInterval:-3600];

        

        //判断两个日期是否相等

        BOOL flag = [dateNow isEqualToDate:dateHourAgo];

        if (flag) {

            NSLog(@"dateNow = dateHourAgo");

        }

        

        //判断两个日期的先后返回较早的日期

        NSDate *date6 = [dateNow earlierDate:dateHourAgo];

        if ([date6 isEqualToDate:dateNow]) {

            NSLog(@"较早的时间是:dateNow");

        }

        else

        {

            NSLog(@"较早的时间是:dateHourAgo");

        }

        

        //判断较晚的日期

        NSDate *date7 = [dateNow laterDate:dateHourAgo];

        if ([date7 isEqualToDate:dateNow]) {

            NSLog(@"较晚的时间是:dateNow");

        }

        else

        {

            NSLog(@"较晚的时间是:dateHourAgo");

        }

        

        //比较两个日期的早晚也可以使用我们之前学过的compare

        NSComparisonResult comparisonResult = [dateNow compare:dateHourAgo];

        switch (comparisonResult) {

            case NSOrderedAscending:

                NSLog(@"dateNow < dateHourAgo");

                break;

            case NSOrderedSame:

                NSLog(@"dateNow = dateHourAgo");

            case NSOrderedDescending:

                NSLog(@"dateNow > dateHourAgo");

            default:

                break;

        }

        

        /*

          NSCalendar

         我们通过时间戳NSTimeInterval 创建一个时间很方便,但是不直观,Foundation框架为此提供NSCalendar,NSCalendar由更自然的日期组成,例如日,月,星期等,可以使用NSDateComponents NSCalendar 来创建一个NSDate对象

        */

        

        NSCalendar *currentCalendar = [NSCalendar currentCalendar];

        NSDateComponents *components = [[NSDateComponents alloc]init];

        components.year = 2015;

        components.month = 2;

        components.day = 10;

        components.hour =10;

        components.minute = 45;

        components.second = 30;

        //输出日期的小时-8

        NSDate *date8 = [currentCalendar dateFromComponents:components];

        NSLog(@"date8 = %@",date8);

        

        //NSTimeZone

        //处理日期和时间经常遇到一个问题就是时区,Foundation框架提供了NSTimeZone来制定地区日历

        //列出所有时区

        NSArray *array = [NSTimeZone knownTimeZoneNames];

        NSLog(@"%@",array);

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

        NSTimeZone *timeZone1 = [NSTimeZone timeZoneWithName:@"Asia/Tokyo"];

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

        NSTimeZone *timeZone2 = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];


        //如何将我们的NSDate 转换成NSString NSDateFormatter 默认转黄为本地区时间

        NSDateFormatter *dateFormatter = [NSDateFormatter new];

        //设置时区(默认时区)

        dateFormatter.timeZone = [NSTimeZone systemTimeZone];

        //设置时间输出格式

        [dateFormatter setDateFormat:@"yyyyMMdd HHmmss"];

        

        NSString *string = [dateFormatter stringFromDate:[NSDate date]];

        NSLog(@"%@",string);

        

        //将时间的类型的字符串转换成日期

        NSString *string1 = @"1970-01-01 08:00:00";

        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

        

        //这里得到的时间是GMT时间

        NSDate *date9 = [dateFormatter dateFromString:string1];

        NSLog(@"%@",date9);

        

        NSTimeInterval timeInterval = date9.timeIntervalSinceNow;

        NSLog(@"距今已经%f秒了",(-timeInterval/60));

        

        NSLog(@"%f",[[NSDate date] timeIntervalSince1970]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值