OC学习日记10-缓冲区和日期

来源:互联网 发布:单片机ds18b20工作原理 编辑:程序博客网 时间:2024/06/04 19:17

缓冲区和日期

这里写图片描述

前言

我们在读写文件或下载时,都需要频繁的将数据读入一个临时存储区,她通称为缓冲区。而我们在看qq动态或朋友圈,甚至在看很多文章的时候,我们都可以看到日期的应用。这两个是程序应用在实践中重要的数据类型。

缓冲区

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

不可变NSData

初始化

创建一个空的data
    NSData *data1=[NSData data];

将字符串转换成NSData

注意:使用const关键字来将一个变量变为常量,const修饰的常量也称为‘命名常量’或者‘符号常量’

     const char *str="Hello";        NSData *data2=[NSData dataWithBytes:str length:strlen(str)];        NSString *string=@"你好吗";        NSData *data3=[string dataUsingEncoding:NSUTF8StringEncoding];

将本地文件中的数据转换成data

        NSData *data4 = [NSData dataWithContentsOfFile:@"/Users/macpro/Desktop/oc/OC-010/OC-010/8EDD2DE79FF1553E50C64DCCB261BDE8.jpg"];        NSLog(@"%@",data4);

将数据写入本地文件

    BOOL flag=[data4 writeToFile:@"/Users/macpro/Desktop/angelbaby.png" atomically:YES];        if (flag) {            NSLog(@"写入成功");        }

求Data 的字节长度

     NSUInteger length=data4.length;        NSLog(@"%lu",length);

可变NSMutableData

创建一个空的data ,NSMutableData

    NSMutableData *mData=[NSMutableData data];

增加data

    [mData appendData:data4];

日期NSDate

在OC中,Foundation框架为我们提供了强大的时间操作类‘NSDate’,该类封装了各种处理时间和日期的API
获取系统当前时间(GMT 格林尼治时间,与北京之间相差了八个小时,北京时间 =GMT+8)

     NSDate *date1=[NSDate date];        NSLog(@"%@",date1);

时间搓

(NSTimeInterval)是一个以秒为单位的时间片,也叫时间搓

距离现在日期timeIntval时间戳的时间

NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:120];NSLog(@"%@",date2);

距离1970.1.1日期timeIntval时间搓的时间

NSDate *date3=[NSDate dateWithTimeIntervalSince1970:120];NSLog(@"%@",date3);

距离 sinceDate日期timeIntval时间搓的时间

     NSDate *date4=[NSDate dateWithTimeInterval:120 sinceDate:[NSDate date]];        NSLog(@"%@",date4);

通过时间追加创建NSDate

      NSDate *date5=[date4 dateByAddingTimeInterval:120];        NSLog(@"%@",date5);

日期比较

用时间搓比较date和1970年,现在的时间差(秒表示)

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

用dateNow earlierDate和dateNow laterDate比较

     NSDate *dateNow=[NSDate date];        NSDate *dateHourAgo=[dateNow dateByAddingTimeInterval:-3600];        NSLog(@"%@",dateHourAgo);        BOOL flag=[dateNow isEqualToDate:dateHourAgo];        if (flag) {            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: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");                break;            }            case NSOrderedDescending:{                NSLog(@"dateNow > dateHourAgo");                break;            }                 }

日历具体时间的输入NSCalendar\NSDateComponents

为了让我们要输出具体年月日更加直观方便,我们可以用NSCalendar和NSDateComponents

        NSCalendar *currentCalendar =[NSCalendar currentCalendar];        NSDateComponents *components =[[NSDateComponents alloc]init];        components.year=2016;        components.month=8;        components.day=12;        components.hour=12;        components.minute=14;        components.second=10;        NSDate *date8=[currentCalendar dateFromComponents:components];        NSLog(@"%@",date8);

时区(NSTimeZone)

列出所有的时区

        NSArray *array=[NSTimeZone knownTimeZoneNames];        NSLog(@"array= %@",array);

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

[NSTimeZone timeZoneWithName:@"Asia/Shanghai"];  

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

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

如何将字符串转换成Data类型

    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=@"1970-08-12 16:08:00";        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];        NSDate *date9 = [dateFormatter dateFromString:string2];        NSLog(@"%@",date9);        NSTimeInterval timeInterval = date9.timeIntervalSinceNow;        NSLog(@"%f",-timeInterval);        int n = (int)-timeInterval/60;        NSTimeInterval timeInterval2 = [[NSDate date] timeIntervalSince1970];        NSLog(@"%f",timeInterval2);

这里写图片描述

0 0