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
- OC学习日记10-缓冲区和日期
- OC学习日记11-KVC和KVO
- [oc学习日记]字典
- OC学习日记01
- 黑马程序员:OC学习日记之方法和函数
- 黑马程序员--IOS学习日记:02--OC类和对象
- 学习日记-OC和C的一些差异
- OC学习日记Day1:程序怎么执行、类和对象
- OC学习日记05-封装、继承和多态
- OC学习日记014-单例模式和委托模式
- OC学习日记17 (三) get和post
- [oc学习日记]代理模式
- OC学习日记07-数组
- OC学习日记09-字典
- OC学习日记013-协议
- 黑马程序员:OC学习日记之self
- 黑马程序员:OC学习日记之Foundation
- 黑马程序员:OC学习日记之block
- 类的拷贝与控制(1)拷贝控制操作
- Win7(32/64)VS2010配置编译GDAL环境(图文教程)
- HDU 1051 Wooden Sticks (LIS)
- js中请求URL获得json数据,将数据解析并建表插入
- 安装oracle 11g R2的时候提示:pdksh包没有安装 解决办法
- OC学习日记10-缓冲区和日期
- ScrollView嵌套圆角Listview 实现同时滑动效果
- POJ2386 Lake Counting
- 函数里写函数;函数是对象,也可以给他添加方法
- hdu1166 敌兵布阵(线段树经典的单点更新)
- 响应式布局
- Mac 安装mysql
- Nmap常用使用方法
- footable ajax 翻页后没有样式的问题.版本为V2