==========================

Foundation框架下的常用类

==========================

一.【NSNumber】===============================================

【注】像int、float、char、double等这种都是基础数据类型。

【注】继承自C语言的基础变量类型(int,float,char、double等)不能被添加到数组和字典等oc专有的数据结构中。使用不方便,也不能通过添加类别等oc专有语法进行管理。

【另】可以认为,NSNumber是基础类型数据转成对象类型数据的一个类。

【注】NSNumber 就是一个类,这个类就是为了把基础数据类型转成对象数据类型的一个类。

【注】可以先将基础类型的数据存入到nsnumber对象中,再将nsnumber存入到数组或者字典中。

【注】NSNumber能干的事情都可以用NSString来取代。所以,更常用NSString。

二.【NSDate】=====================================

【注】NSDate就是一个日期(时间)类。

【注】因为存在时区差异,获取的时间差8小时

∆1 // 当前时间创建NSDate

NSDate *myDate = [NSDate date];

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

∆       2 //从现在开始的24小时

NSTimeInterval secondsPerDay = 24*60*60;

NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];

NSLog(@"myDate = %@",tomorrow);

3//根据已有日期创建日期

NSTimeInterval secondsPerDay1 = 24*60*60;

NSDate *now = [NSDate date];

NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];

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

∆      4//比较日期

BOOL sameDate = [now isEqualToDate:yesterDay];

NSLog(@"sameDate = %lu",sameDate);

∆            4.1//获取较早的日期

NSDate *earlierDate = [yesterDay earlierDate:now];

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

∆            4.2//较晚的日期

NSDate *laterDate = [yesterDay laterDate:now];

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

三. NSCalendar=====================================

//通过NSCALENDAR类来创建日期

//通过NSCalendar这个类可以自己创建一个指定的日期

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

[comp setMonth:06];

[comp setDay:01];

[comp setYear:2001];

[comp setHour:24];

NSCalendar *myCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

NSDate *myDate1 = [myCal dateFromComponents:comp];

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

//从已有日期获取日期

NSCalendar *myCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

unsigned units  = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;

NSDateComponents *comp1 = [myCal components:units fromDate:[NSDate date]];

NSInteger month = [comp1 month];

NSInteger year = [comp1 year];

NSInteger day = [comp1 day];

ΔΔ四【NSDateFormatter】格式化日期类==================================

NSDateFormatter 的一些格式介绍

//实例化一个NSDateFormatter对象

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

//设定时间格式,这里可以设置成自己需要的格式

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

//用[NSDate date]可以获取系统当前时间

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

//输出格式为:2016-03-23 13:22:13

NSLog(@”%@”,currentDateStr);

自定义格式

[dateFormatter setDateFormat:@"yyyy- MM-dd HH:mm:ss"]; //这里要注意的是formatter的格式,如果是小写的"hh",那么时间将会跟着系统设置变成12小时或者 24小时制。大写的"HH",则强制为24小时制。

[dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE为星期几,EEE为周几

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

[dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 为xx月,一个d可以省去01日前的0

输出格式通setDateStyle和setTimeStyle设置,分别定义的日期和时间的格式可选一下的系统给出的方法

typedef enum {

NSDateFormatterNoStyle     = kCFDateFormatterNoStyle,

NSDateFormatterShortStyle  = kCFDateFormatterShortStyle,//“11/23/37” or “3:30pm”

NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//\"Nov 23, 1937\"

NSDateFormatterLongStyle   = kCFDateFormatterLongStyle,//\"November 23, 1937” or “3:30:32pm\"

NSDateFormatterFullStyle   = kCFDateFormatterFullStyle//“Tuesday, April 12, 1952 AD” or “3:30:42pm PST”

} NSDateFormatterStyle;

五.日期比较========================================

日期之间比较可用以下方法

- (BOOL)isEqualToDate:(NSDate *)otherDate;

与otherDate比较,相同返回YES

- (NSDate *)earlierDate:(NSDate *)anotherDate;

与anotherDate比较,返回较早的那个日期

- (NSDate *)laterDate:(NSDate *)anotherDate;

与anotherDate比较,返回较晚的那个日期

- (NSComparisonResult)compare:(NSDate *)other;

该方法用于排序时调用:

. 当实例保存的日期值与anotherDate相同时返回NSOrderedSame

. 当实例保存的日期值晚于anotherDate时返回NSOrderedDescending

. 当实例保存的日期值早于anotherDate时返回NSOrderedAscending

六.NSDate转NSString互相转化======================================

//NSDate 转NSString 并截取月份

NSString* time = [[NSString alloc]initWithFormat:@"%@",myDate1];

NSLog(@"%@",time);

NSRange range = {5,2};

NSLog(@"month:%@",[time substringWithRange:range]);

Δ七.iOS-NSDate 相差 8 小时 ==============================

//方法一

- (void)tDate

{

NSDate *date = [NSDatedate];

NSTimeZone *zone = [NSTimeZonesystemTimeZone];

NSInteger interval = [zone secondsFromGMTForDate: date];

NSDate *localeDate = [date  dateByAddingTimeInterval: interval];

NSLog(@"%@", localeDate);

}

//方法二

+ (NSString *)fixStringForDate:(NSDate *)date

{

NSDateFormatter* dateFormatter = [[NSDateFormatteralloc]init];

[dateFormatter setDateStyle:kCFDateFormatterFullStyle];

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

NSString *fixString = [dateFormatter stringFromDate:date];

[dateFormatter release];

return fixString;

}

ΔΔ【NSNull】

【注】表示空的事物有四个

【NULL】【nil】【Nil】【NSNull】

NULL:表示基础类型指针为空

int * p = NULL;

nil:表示对象指针为空

id obj = nil;

Nil:表示Class变量为空

Class class = Nil;

NSNull:用在数组字典等数据结构中占位,作为空元素

//唯一方法

[NSNull null]; 创建表示空的对象

八.归档 NSKeyedArchiver============================================

//创建了一个数组,初始化了一些数据

NSArray* array = [[NSArray alloc]initWithObjects:@"zhangsan",@"lisi",@"wanger",@"xiaoming", nil];

//先指定要保存的文件名称以及路径

//NSHomeDirectory()就是当前系统的home路径

//stringByAppendingPathComponent 添加一个文件,文件名是:file

//文件类型可以不写,文件名称和后缀随便

NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"file.txt"];

NSLog(@"归档文件路径:%@",filePath);

//NSKeyedArchiver 这个类是用来归档的类

//返回值代表归档是否成功

//【注】如果对同一个路径下的同一个文件进行归档操作,就会覆盖掉旧的。

BOOL isSuccess = [NSKeyedArchiver archiveRootObject:array toFile:filePath];

if (isSuccess == YES) {

NSLog(@"文件保存成功");

}

//【注】归档的文件都是经过简单加密的,打不开,也是不允许打开的。

//解归档

NSArray* Arr = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

NSLog(@"取出的数据是:%@",Arr);

NSDate的常用用法==============================================
1. 创建或初始化可用以下方法 ----------------------------------------------------

用于创建NSDate实例的类方法有 + (id)date;
返回当前时间

+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; 返回以当前时间为基准,然后过了secs秒的时间

+

(id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)

secs;

返回以2001/01/01 GMT为基准,然后过了secs秒的时间

+

(id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

返回以1970/01/01 GMT为基准,然后过了secs秒的时间

+ (id)distantFuture;

返回很多年以后的未来的某⼀一天。 比如你需要⼀一个比现在(Now)晚(大)很长时间的时间值,则可以调用该方法。

+ (id)distantPast;

返回很多年以前的某⼀一天。

比如你需要⼀一个比现在(Now)早(小)大很长时间的时间值,则可以调用该方 法。

用于创建NSDate实例的实例方法有
- (id)addTimeInterval:(NSTimeInterval)secs; 返回以目前的实例中保存的时间为基准,然后过了secs秒的时间

用于初始化NSDate实例的实例方法有 - (id)init; 初始化为当前时间。类似date方法

-

(id)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)

secs;

初始化为以2001/01/01 GMT为基准,然后过了secs秒的时间。类似 dateWithTimeIntervalSinceReferenceDate:方法

- (id)initWithTimeInterval:(NSTimeInterval)secs

sinceDate:(NSDate *)refDate;

初始化为以refDate为基准,然后过了secs秒的时间

- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs; 初始化为以当前时间为基准,然后过了secs秒的时间

3. 取回时间间隔可用以下方法 ------------------------------------------------------------------

- (NSTimeInterval)timeIntervalSinceDate:(NSDate

*)refDate;

以refDate为基准时间,返回实例保存的时间与refDate的时间间隔

- (NSTimeInterval)timeIntervalSinceNow;

以当前时间(Now)为基准时间,返回实例保存的时间与当前时间(Now)的时 间间隔

- (NSTimeInterval)timeIntervalSince1970;

以1970/01/01 GMT为基准时间,返回实例保存的时间与1970/01/01 GMT 的时间间隔

- (NSTimeInterval)timeIntervalSinceReferenceDate;

以2001/01/01 GMT为基准时间,返回实例保存的时间与2001/01/01 GMT 的时间间隔

+ (NSTimeInterval)timeIntervalSinceReferenceDate;

以2001/01/01 GMT为基准时间,返回当前时间(Now)与2001/01/01 GMT 的时间间隔

*/

// 时区类
// 获得系统时区

NSTimeZone *tz = [NSTimeZone systemTimeZone];
// 获得当前时间距离GMT时间相差的秒数!
NSInteger seconds = [tz secondsFromGMTForDate:[NSDate

date]];
// 以[NSDate date]时间为基准,间隔seconds秒后的时间! NSDate *localDate = [NSDate

dateWithTimeInterval:seconds sinceDate:[NSDate date]]; // 北 京时间

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

// 日期和字符串相互转换

// 日期格式的类!
NSDateFormatter *df = [[NSDateFormatter alloc] init]; // 2013-11-27 11:00:57
// HH 24小时进制 hh 12小时进制
df.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *dateStr = [df stringFromDate:[NSDate date]]; NSLog(@"dateStr = %@", dateStr);

NSDate *dateTest = [df dateFromString:@"2013-11-27

11:00:57"];

NSLog(@"dateTest = %@", dateTest);//默认是格林威治时间需 要转化为北京时间

NSTimeZone *tz = [NSTimeZone systemTimeZone]; // 获得dateTest距离GMT时间相差的秒数! NSInteger seconds = [tz

secondsFromGMTForDate:dateTest];

NSDate *localDate = [NSDate dateWithTimeInterval:seconds sinceDate: dateTest]; // 北京时间

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

【阅读官方文档】

【注】建议阅读Xcode官方,官方文档非常标准的,没有错误。

//缺点:

1.可读性比较差。(读不懂)(官方文档都比较言简意赅)

2.例子比较少,很少有参照demo。

//优点

1.知识严谨。

2.当遇到某些特殊(疑难杂症)官方文档都可以找到答案(前提是花费时间去阅读查找)

OC-Foundation框架的更多相关文章

  1. OC Foundation框架—集合

    Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向 ...

  2. OC Foundation框架—结构体

    一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...

  3. OC Foundation框架—字符串

    一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableA ...

  4. iOS - OC Foundation 框架

    前言 框架是由许多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使研发程序更容易. Foundation 框架:为所有程序开发奠定基础的框架称为 Foundation 框架. Cocoa :是指 ...

  5. [OC Foundation框架 - 20] 统计代码行数

    注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量   // // main.m // CodeLineCount // // Created ...

  6. OC — (Foundation框架-NSDate)

    NSDate:是OC中处理日期时间的一个类,可以用来表示时间 获取当前的时间 NSDate *d = [NSDate date]; 创建日期时间对象 NSLog输出是当前时间 格林时间 格式化显示时间 ...

  7. [OC Foundation框架 - 23] 文件管理

    A. 目录管理 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 // 1.获取文件属性 NSString *path = @& ...

  8. [OC Foundation框架 - 13] NSValue

    NSNumber能够包装基本数据类型称为OC对象,是因为继承了NSValue 包装结构体成OC对象 1.自带结构体 void value() { CGPoint point = CGPointMake ...

  9. [OC Foundation框架 - 12] NSNumber

    1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包   void number() ...

  10. [OC Foundation框架 - 9] NSMutableArray

    可变的NSArray,可以随意添加OC对象   1.创建 void arrayCreate() { NSMutableArray *array = [NSMutableArray arrayWithO ...

随机推荐

  1. linux 学习笔记之文件与管理

    前言: 对于windows来说,文件的系统管理都是非常简单的(这个应该有一个捂脸),通常就是重命名,复制,移动,删除,查看文件属性,查看文件内容,寻找文件.其实在图形化行中的linux也是有这样子功能 ...

  2. 关于 sql server 基本使用的建议

    1.   把现有的表插入到新表,(表不能存在),为表备份. --  select  *  into  NewTable   from  OldTable   (NewTable 在select 查询的 ...

  3. HTML初识(Day46)

    一.HTML初识 1.web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM ...

  4. MySQL 单表查询(Day42)

    阅读目录 一,查询语法 二,简单查询 三,where约束 四,having过滤 五,分组查询 group by 六,关键字的执行优先级 七,查询排列 order by 八,使用聚合函数查询 九,whe ...

  5. 把RedisWatcher安装为windows服务

    安装完成后, 到安装目录下修改watcher.conf.注意,任何路径都不可包含空格,中文,特殊字符,且全部使用绝对路径配置文件中文注释exepath --> redis-server.exe的 ...

  6. React:快速上手(4)——掌握Redux(1)

    React:快速上手(4)——掌握Redux 引入Redux 混乱的state管理 随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状 ...

  7. 【JavaScript】canvas实现一个小游戏

    参考: 1.image onload事件:http://www.runoob.com/jsref/event-img-onload.html(赞) 2.canvas的drawImage无法显示图像:h ...

  8. Sybase数据库:两个特别注意的地方

    Sybase数据库:两个特别注意的地方 一.字段别名 字段别名不能为查询条件中的列名,会导致查询出来的数据不准确:最好字段别名为非列名: 二.更新的表名的大小写 update a set .... s ...

  9. Python-GUI编程-PyQt5

    Python-GUI编程-PyQt5 1. GUI编程是什么? GUI 全称为: Graphical User Interface;简称GUI翻译为中文为: 图形化用户接口简单理解就是:- 使用Pyt ...

  10. cocoa中获得root权限的几种方法

    目前我所知道的,在cocoa中获得root权限的方法有3种: 1. 通过AuthorizationCopyRights函数 2. 在UI上添加一个锁的样子的控件,然后通过开关这个锁来获取root权限 ...