`

与时间相关的类——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 间中需要进行 "闰秒" 以控制两者相差。
分享到:
评论

相关推荐

    NSDate分类,获得对应中国农历

    首先,我们需要了解iOS中处理日期的基本类——NSDate、NSCalendar、NSDateComponents等。NSDate是苹果提供的一个抽象类,代表了绝对时间,而NSCalendar则用于处理日历相关的计算,如日期的加减、比较等。...

    IOS应用源码——自定义的马赛克时间风格.rar

    1. **日期与时间处理**:首先,我们需要使用`NSDate`类来获取当前系统时间,然后通过`NSCalendar`、`NSDateComponents`等类进行日期和时间的转换。这些基础操作是所有时间显示的基础。 2. **自定义UIView**:创建一...

    IOS应用源码——一个每日时间安排的小demo.rar

    - 应用可能会使用Foundation框架中的NSDate、NSCalendar、NSTimeInterval等类来处理和显示日期及时间。 8. **通知与提醒**: - 考虑到这是一个时间管理应用,可能会使用UNUserNotificationCenter来设置本地通知,...

    IOS应用源码——日历组件.zip

    5. **日期和时间处理**:iOS中的NSDate、NSCalendar、NSDateComponents等类用于处理日期和时间。例如,可以使用NSCalendar的`components(_:from:)`方法来从日期中提取年、月、日等信息。 6. **通知和提醒**:如果...

    iOS游戏应用源代码——sarperdag-SEHumanizedTimeDiff-ce83c8a.zip

    在iOS中,这通常通过Core Foundation框架中的日期和时间API来实现,如CFDate、NSDate、NSCalendar和NSTimeInterval等。 在源码中,我们可以期待找到以下关键功能: 1. **时间戳转换**:将Unix时间戳或者NSDate对象...

    IOS应用源码——object-c阳历转阴历算法.zip

    1. **计算节气**:阴历与节气紧密相关,如立春、惊蛰等。根据天文数据,可以预先计算出每年的节气日期。 2. **确定年份**:根据公历日期,计算出对应的农历年。这涉及到闰年的判断和农历月份的转换。 3. **计算...

    IOS应用源码——时钟视图.zip

    4. **日期和时间处理**:为了获取当前时间并根据时间更新时钟显示,需要使用Foundation框架中的NSDate、NSCalendar、NSTimeZone等类。这些类可以帮助开发者处理日期和时间的转换。 5. **动画**:为了使指针旋转看...

    黑马iOS入学面试知识点全总结

    - 日期与时间:使用NSDate、NSCalendar、NSTimeInterval等处理日期和时间。 - 错误处理:理解NSError对象及其在异常情况下的应用。 4. iOS开发实战: - 视图与控制器:学习UIView、UIViewController及其子类的...

    IOS应用源码——感恩---奉上大量samplecode(第3部分) 19_18208_19a6de161012b0a.rar

    在iOS中,开发者通常使用NSDate、NSTimer和NSCalendar等类来处理时间。学习这个项目的源码,我们可以了解到如何实现计时器功能,以及如何将时间显示给用户。 5. **iDrum**: "i"前缀通常代表iOS设备,而"Drum"指鼓,...

    可自定义的日历

    1. **日期计算**:需要对日期进行增减、比较等操作,这通常会用到NSDate和NSCalendar类。 2. **视图渲染**:日历的界面展示,可能涉及到自定义UICollectionViewCell,以展示每一天的日期和事件。 3. **手势处理**:...

    schedule:Class-schedule 仿课程格子

    6. **Date and Time Handling**:处理日期和时间的Objective-C类,如NSDate、NSCalendar、NSTimeZone,用于创建、比较和格式化时间。 7. **Storyboard和Auto Layout**:通过Storyboard进行界面布局,并使用Auto ...

    高度自定义的日历demo iOS

    4. 时间周期计算:为了正确地渲染每一天,开发者需要熟悉NSDate和NSCalendar类,以及它们提供的日期操作方法,如日期比较、获取某日期的星期几等。 5. 自定义样式:高度自定义的日历意味着开发者需要控制单元格的...

Global site tag (gtag.js) - Google Analytics