`

与时间相关的类——NSDate、NSCalendar等

    博客分类:
  • ios
阅读更多

NSDate

NSDate 在iOS中NSDate是有关日期操作的核心,一个NSDate代表了一个单独的时间点。在其他类中有关时间的接口一般都是使用这个类。NSDate中提供的方法包括日起对象的创建、比较以及与NSTimeInterval的相互转化

 

官方网站:

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/clm/NSDate/dateWithTimeIntervalSinceNow:

 

作用:

  • 与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

官方介绍:

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.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 间中需要进行 "闰秒" 以控制两者相差。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics