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