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

缓冲区和日期

这里写图片描述

前言

我们在读写文件或下载时,都需要频繁的将数据读入一个临时存储区,她通称为缓冲区。而我们在看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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值