NSDate
NSDate 在iOS中NSDate是有关日期操作的核心,一个NSDate代表了一个单独的时间点。在其他类中有关时间的接口一般都是使用这个类。NSDate中提供的方法包括日起对象的创建、比较以及与NSTimeInterval的相互转化
官方网站:
作用:
- 与NTimeInterval之间相互转化
- 一个NSDate对象通过增加或减少interval来生成一个新的NSDate对象
- NSDate与NSDate对象之间的比较
- 以1970或now问参照,获取一个NTimeInterval对象,基本单位是秒
/* NSDate使用示例 */ - (void)dateMethod{ NSDate *date ; // 五种初始化的方式 // date = [NSDate date]; //NSTimeInterval表示时间间隔,是一个double类型=,基本单位是秒 // date = [NSDate dateWithTimeIntervalSince1970:1000]; // date = [NSDate dateWithTimeIntervalSinceNow:3600]; //从现在开始的时间间隔 // date = [NSDate dateWithTimeIntervalSinceReferenceDate:3600]; //2001年开始 date = [NSDate dateWithTimeInterval:3600 sinceDate:[NSDate date]]; NSLog(@"%@",date); // 2013-07-19 06:53:57 +0000 //date比较 NSDate *date1 = [NSDate dateWithTimeInterval:3600 sinceDate:date]; // 比较两个日期哪个大 NSComparisonResult result = [date compare:date1]; if(result == NSOrderedAscending){ NSLog(@"> earlier"); }else if(result == NSOrderedSame){ NSLog(@"=="); }else if(result == NSOrderedDescending){ NSLog(@"< later"); } // 通过比较,返回一个更早的或更晚的date // NSDate *tDate = [date earlierDate:date1]; NSDate *tDate = [date laterDate:date1]; NSLog(@"%@",tDate); // 更具当前date和时间间隔生成的得到一个新的date对象 NSDate *newDate = [date dateByAddingTimeInterval:3600]; NSLog(@"newDate:%@", newDate); // date转化成一个时间段,基本参考点是1970,2001(ReferenceDate),Now,或者是制定一个date NSTimeInterval interval = [date timeIntervalSinceReferenceDate]; NSLog(@"interval:%f", interval); }
NSDateFormatter
官方介绍:
作用:
- 通过一个NSString对象来创建一个NSDate对象;
- 具体的字符串规则详见:http://blog.sina.com.cn/s/blog_6f9a9718010121w3.html
NSTimeZone
NSCalendar
http://www.cnblogs.com/wujian1360/archive/2011/09/05/2168007.html
NSDateComponents 是NSCalendar的内部类,
时间的计算:
对于时间分为 本地挂钟时间 和 UTC时间,所谓的UTC时间就是指表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数 ,毫无疑问这个时间所有计算机都是一样的。那么我们任务栏上的时间是怎么回事呢?那是OS会把计算机所在的当前时区加上,如:中国在东八区,就会在UTC时间上加上 8(小时)*60*60*1000作为本地挂钟时间(不考虑夏令时)。
UTC与GMT区别:
UTC = Coordinated Universal Time. 中文名称为协调世界时.
GMT = Greenwich Mean Time. 中文名称为格林尼治(平)时(这里的"w"是不发音的,而且"Green"要读成"Gren")
UTC = GMT +/- 0.9 s
结论:UTC与GMT可以换用,UTC 间中需要进行 "闰秒" 以控制两者相差。