OC_09可变与不可变缓冲区(...Data)及日期时间NSDate

本文介绍了Objective-C中NSData类的应用,包括文件数据的读取与写入、字符串与数据之间的转换等,并深入探讨了NSDate类的各种时间操作方法及日期格式化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSData/NSMutableData
/*
1.计算机中文件分为哪几种?
二进制文件 和 文本文件 ,其中我们的图片、视频、音频等就是二进制文件,像’.txt’的文件就是文本文件
2.客户端与服务器端,或者客户端与客户端数据交流的格式为二进制(字节流)
在我们OC中用什么类存储?即‘NSData’类。在NSData类中,由其实例化的对象,此对象包含了大量的字节,这些字节就是我们客户端想要的信息
*/


//初始化
//        创建一个空的data
        NSData *data1 = [NSData data];
        //将字符串转换成NSData
        const char *str = "Hello";
        //用const把str变为常量
// str[0] = 'd';  //使用const这个关键字来将一个变量变为常量。const修饰的常量也称为‘命名常量’或者‘符号常量’  一旦被初始化之后,字符串就不能修改了。(不用const str[0] = 'd'就可以把H换成d).
        NSData *data2 = [NSData dataWithBytes:str length:strlen(str)];

        //将OC中的字符串转换成NSData
        NSString *string= @"你好吗";
        NSData *data3 =  [string dataUsingEncoding:NSUTF8StringEncoding];

        //将本地文件中的数据转换成data
       NSData *data4 =  [NSData dataWithContentsOfFile:@"/Users/ibokan/Desktop/OC_X/OC_09/OC_09/EOHC9C](`BU(2GZ]WTPK_`V.jpg"];
//        NSLog (@"%@",data4);
//将数据写入本地文件
//       BOOL flag = [data4 writeToFile:@"/Users/ibokan/Desktop/anglababy.png" atomically:YES];
//       if (flag) {
//            NSLog(@"写入成功");
//        }

        //求data 的字节长度
        NSUInteger length = data4.length;
        NSLog(@"%lu",length);

        //创建一个空的data NSMutableData
        NSMutableData *mData = [NSMutableData data];

        //增加Data
        [mData appendData:data4];```

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

//获取系统当前时间(GMT 格林尼治时间,与北京时间相差8小时 北京时间 = GMT+8)
        NSDate *date1 = [NSDate date];
        NSLog(@"%@",date1);

//(NSTimeInterval) 是一个以秒为单位的时间片,也叫 时间戳
        NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:120];//在当前GMT时间基础上加2分钟,也可以减2分钟 -120
        NSLog(@"%@",date2);
        //距离1970.1.1日期timeInterval时间戳的时间
        NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:120];
        NSLog(@"%@",date3);

        //距离sinceDate日期timeInterval时间戳的时间
        NSDate *date4 = [NSDate dateWithTimeInterval:120 sinceDate:[NSDate date]];
        NSLog(@"%@",date4);

        //通过时间追加创建NSDate
        NSDate *date5 = [date4 dateByAddingTimeInterval:120];
        NSLog(@"%@",date5);

        //日期比较
        //1.两个日期的时间戳
        NSTimeInterval timeIntervalSince1970 =  [[NSDate date]timeIntervalSince1970];
        NSLog(@"timeIntervalSince1970 = %f",timeIntervalSince1970);


        //
       NSTimeInterval timeIntervalSinceNow = [[NSDate date]timeIntervalSinceNow];
        NSLog(@"timeIntervalSinceNow  = %f",timeIntervalSinceNow    );

        //
        NSDate *dateNow = [NSDate date];
//        NSDate *dateSinceOneHour = [NSDate dateWithTimeIntervalSinceNow:-3600+8*3600];
//        NSLog(@"%@",dateNow);
//        NSLog(@"%@",dateSinceOneHour);

        NSDate *dateHourAgo = [dateNow dateByAddingTimeInterval:-3600];
        //判断两个日期是否相等
        BOOL flag1= [dateNow isEqualToDate:dateHourAgo];
        if (flag1) {
        NSLog(@"dateNow = dateHourAgo");
        }
        NSDate *date6 =  [dateNow earlierDate:dateHourAgo];
        if ([date6 isEqualToDate:dateHourAgo]) {
        NSLog(@"dateHourAgo 是较早时间");
        }else{
        NSLog(@"dateNow 是较早时间");
        }

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

       NSComparisonResult comparisonresult =  [dateNow compare:dateHourAgo];
        switch (comparisonresult) {
            case NSOrderedAscending:{
       NSLog(@"dateNow < dateHourAgo");
                break;
            }
            case NSOrderedSame:{
       NSLog(@"dateNow = dateHourAgo");
                break;
            }
            case NSOrderedDescending:{
       NSLog(@"dateNow > dateHourAgo");
                break;
            }
            default:
                break;
        }
        NSCalendar *currentCalendar = [NSCalendar currentCalendar];
        NSDateComponents *components = [[NSDateComponents alloc]init];
        components.year = 2016;
        components.month = 8;
        components.day = 12;
        components.hour = 12+8;
        components.minute = 14;
        components.second = 41;

        NSDate * date8 = [currentCalendar dateFromComponents:components];
        NSLog(@"%@",date8);

        //时区
        //NSTimeZone
        //列出所有的时区
//        NSArray *array = [NSTimeZone knownTimeZoneNames];
//        NSLog(@"array = %@",array);

        //指定名称参数创建一个时区
        NSTimeZone *timeZone1 = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];

        //指定时区缩写创建一个时区
NSTimeZone *timeZone2 = [NSTimeZone timeZoneWithAbbreviation:@"PRC"];
//        NSLog(@"%@",timeZone1);
//        NSLog(@"%@",timeZone2);

        //如何将日期NSDate转换成字符串类型
        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 *string1 = [dateFormatter stringFromDate:[NSDate date]];
       NSLog(@"%@",string1);  //输出了当前的北京时间

        //如何将字符串转换成NSDate类型
NSString *string2 = @"2016-08-12 16:00:00";

        //设置时区
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];//UTC为世界调整时间

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

       NSDate *date9 = [dateFormatter dateFromString:string2];
//        NSLog(@"%@",date9);
//        
       NSTimeInterval timeInterval = date9.timeIntervalSinceNow;
//        NSLog(@"%f",-timeInterval);

        int m = (int)-timeInterval/60; //date9距离现在的分钟数
        NSLog(@"m = %d",-m);
//       NSTimeInterval timeInterval2 = [[NSDate date]timeIntervalSince1970];
//       NSLog(@"%f",timeInterval2);

运行结果不为大家放了,大家可以看看代码,若有什么问题,欢迎大家提出,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值