NSDate Class Reference

        NSDate对象是IOS中处理日期的对象,它代表一个单一的时间点,也意味着它是不可变得。本文介绍了关于NSDate的一系列接口编程。

格式化日期输出字符串需要使用到的方法是dateFromString: 和stringFromDate:,详见我的另一篇博文《NSDateFormatter Class Reference
如果想知道关于日期的计算,以及提取日期的重要信息,如年、月、日等,详见我的另一篇博文《NSCalendar Class Reference


初始化

+ date
+ dateWithTimeIntervalSinceNow:
+ dateWithTimeInterval:sinceDate:
+ dateWithTimeIntervalSinceReferenceDate:
+ dateWithTimeIntervalSince1970:
- init
- initWithTimeIntervalSinceNow:
- initWithTimeInterval:sinceDate:
- initWithTimeIntervalSinceReferenceDate:
- initWithTimeIntervalSince1970:

#pragma mark 初始化
- (void)testCreatingAndInitializing {

    // 初始化(+)
    // 当前系统时间,获取的为美国时区
    NSDate *date = [NSDate date];
    // 以当前系统时间为起点,前进10秒
    date = [NSDate dateWithTimeIntervalSinceNow:10];
    // 以date为起点,前进10秒
    date = [NSDate dateWithTimeInterval:10 sinceDate:date];
    // 以2001-01-01 00:00:00为起点,前进10秒
    date = [NSDate dateWithTimeIntervalSinceReferenceDate:10];
    // 以1970-01-01 00:00:00为起点,前进10秒
    date = [NSDate dateWithTimeIntervalSince1970:10];

    // 初始化(-)
    date = [[NSDate alloc] init];
    date = [[NSDate alloc] initWithTimeIntervalSinceNow:10];
    date = [[NSDate alloc] initWithTimeInterval:10 sinceDate:date];
    date = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:10];
    date = [[NSDate alloc] initWithTimeIntervalSince1970:10];

}

 

时间边界

+ distantFuture
+ distantPast

#pragma mark 时间边界
- (void)testGettingTemporalBoundaries {
    // NSDate生成的时间边界

    // 时间最大值,output 4001-01-01 00:00:00 +0000
    NSDate *date = [NSDate distantFuture];

    // 时间最小值 output 0000-12-30 00:00:00 +0000
    date = [NSDate distantPast];

}

 

时间比较

- isEqualToDate:
- earlierDate:
- laterDate:
- compare:

#pragma mark 时间比较
- (void)testComparing {

    NSDate *date1 = [NSDate date];
    NSDate *date2 = [NSDate dateWithTimeInterval:10 sinceDate:date1];

    BOOL isEqual = [date1 isEqualToDate:date2];
    NSLog(@"isEqual:%d", isEqual);

    // 返回小的时间
    NSDate *date = [date1 earlierDate:date2];

    // 返回大的时间
    date = [date1 laterDate:date2];

    // 时间比较,<、=、>
    NSComparisonResult result = [date1 compare:date2];
    switch (result) {
        case NSOrderedAscending:
            NSLog(@"<");
            break;
        case NSOrderedSame:
            NSLog(@"=");
            break;
        case NSOrderedDescending:
            NSLog(@">");
            break;
    }

}

 

时间间隔

- timeIntervalSinceDate:
timeIntervalSinceNow Property
+ timeIntervalSinceReferenceDate
timeIntervalSinceReferenceDate Property
timeIntervalSince1970 Property

#pragma mark 时间间隔
- (void)testGettingTimeIntervals {

    NSDate *date1 = [NSDate date];
    NSDate *date2 = [NSDate dateWithTimeInterval:10 sinceDate:date1];

    // date1与date2间隔的秒数
    NSTimeInterval timeInterval = [date1 timeIntervalSinceDate:date2];

    // date2与当前时间间隔的秒数
    timeInterval = [date2 timeIntervalSinceNow];

    // date2与2001-01-01 00:00:00间隔的秒数
    timeInterval = [date2 timeIntervalSinceReferenceDate];

    // 当前时间与1970-01-01 00:00:00间隔的秒数
    timeInterval = [date2 timeIntervalSince1970];

    // 当前时间与2001-01-01 00:00:00间隔的秒数
    timeInterval = [NSDate timeIntervalSinceReferenceDate];

}

 

添加一个时间间隔

- dateByAddingTimeInterval:

#pragma mark 添加一个时间间隔
- (void)testAddingTimeInterval {

    NSDate *date = [NSDate date];

    // 返回一个以date为起点增加10秒的NSDate
    date = [date dateByAddingTimeInterval:10];

}

 

时间的描述信息

description Property
- descriptionWithLocale:

#pragma mark 时间的描述信息
- (void)testRepresentingDatesAsStrings {

    NSDate *date = [NSDate date];

    NSString *description = date.description;
    NSLog(@"%@", description);

    // 当前用户选择的时区
    NSLocale *locale = [NSLocale autoupdatingCurrentLocale];
    description = [date descriptionWithLocale:locale];
     NSLog(@"%@", description);

}

 


其他

参考资料

NSDate Class Reference

 

文档修改记录

时间描述
2015-10-15根据IOS9的NSDate API总结
2015-10-16增加关于NSDate转NSString和NSSring转NSDate的博文链接http://blog.csdn.net/y550918116j/article/details/49175299
2015-10-17增加关于介绍NSCalendar的博文链接NSCalendar Class Reference

 


版权所有:http://blog.csdn.net/y550918116j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值