本文主要介绍关于NSDate的相关知识。
首先看一下它的简单使用,如下:
- (void)testNSDate {
// NSDate初始化方法
// 当前时间
NSDate *nowDate1 = [NSDate date];
NSLog(@"--1--%@", nowDate1);
NSLog(@"=================================");
// 距离当前时间后2秒的时间
NSDate *nowDate2 = [NSDate dateWithTimeInterval:2.0 sinceDate:[NSDate date]];
NSLog(@"--2--%@", nowDate2);
NSLog(@"=================================");
// 距离1970 01 01 00:00:00后20000秒的时间
NSDate *nowDate3 = [NSDate dateWithTimeIntervalSince1970:20000.0];
NSLog(@"--3--%@", nowDate3);
NSLog(@"=================================");
// 距离当前时间后10秒的时间
NSDate *nowDate4 = [NSDate dateWithTimeIntervalSinceNow:10.0];
NSLog(@"--4--%@", nowDate4);
NSLog(@"=================================");
// 以2001-01-01 00:00:00的偏移秒数来初始化
NSDate *nowDate5 = [NSDate dateWithTimeIntervalSinceReferenceDate:0];// 2001
NSLog(@"--5--%@", nowDate5);
NSLog(@"=================================");
NSDate *earlyDate = [nowDate1 earlierDate:nowDate2];// 返回两者时间较早的日期
NSDate *laterDate = [nowDate1 laterDate:nowDate2];// 返回两者时间较晚的日期
NSLog(@"较早的日期:%@", earlyDate);
NSLog(@"较晚的日期:%@", laterDate);
}
我们还可以利用NSDate将其他格式的日期转化成NSDate:如:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
- (void)testTransDate {
// 将其他格式的日期转化成NSDate:如:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
// 给定一个日期字符串,转化成日期格式
NSString *someDate = @"Tue Sep 01 15:05:02 +0800 2015";
// 设置时间格式化器
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式
fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";// 设置上面给出的日期格式
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];// 上面日期格式的本地化设置
// 上面是告诉fmt要转化的日期是什么样的格式
// 利用fmt转化:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
NSDate *date = [fmt dateFromString:someDate];// 转化后的NSDate类型,后面就可以对这样日期格式进行格式化
fmt.dateFormat = @"日期:yyyy MM dd";// 将NSDate转化成“日期:2015 09 01”格式
NSLog(@"%@", [fmt stringFromDate:date]);
}
我们还可以利用NSDate对给定的日期(NSDate类型)和现在日期的判断(date 和 nowDate的判断),如下:
- (void)viewDidLoad {
[super viewDidLoad];
// 给定一个日期字符串,转化成日期格式
NSString *someDate = @"Tue Sep 01 15:05:02 +0800 2015";
// 设置时间格式化器
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式
fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";// 设置上面给出的日期格式
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];// 上面日期格式的本地化设置
// 上面是告诉fmt要转化的日期是什么样的格式
// 利用fmt转化:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
NSDate *date = [fmt dateFromString:someDate];// 转化后的NSDate类型,后面就可以对这样日期格式进行格式化
// 给定的日期(NSDate类型)和现在日期的判断(date 和 nowDate的判断)
// 1.是否是同一年
NSDate *nowDate = [NSDate date];// 获取当前时间
// int unit = NSCalendarUnitYear;// 获取日期中的年份
//
// NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
// NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
//
// if (nowComponets.year == componets.year) {
// NSLog(@"是同一年");
// }else {
// NSLog(@"不是同一年");
// }
// // 2.是否是同年同月
// int unit = NSCalendarUnitYear | NSCalendarUnitMonth;// 获取日期中的年份和月份
//
// NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
// NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
//
// if (nowComponets.year == componets.year
// && nowComponets.month == componets.month) {
// NSLog(@"是同年同月");
// }else {
// NSLog(@"不是同年同月");
// }
// 3.是否是同年同月
int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;// 获取日期中的年份、月份和日期
NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
if (nowComponets.year == componets.year
&& nowComponets.month == componets.month
&& nowComponets.day == componets.day) {
NSLog(@"是同年同月同日");
}else {
NSLog(@"不是同年同月同日");
}
}
NSDate的使用就介绍到这里。