前言:总结了学习中遇到的几种NSDate和NSString比较的情况
pragma mark -- 01 时间字符串转NSDate / NSDate 转 NSString
#date转NSString
-(void) date2string
{
//获得手机当前时间
NSDate *date = [NSDate date];
//时间转码
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy年MM月dd号 HH:mm:ss";
NSString *string = [fmt stringFromDate:date];
NSLog(@"----%@+++++", string);
}
#NSString转date
-(void) string2date
{
// 时间字符串
NSString *string = @"2016-07-13 09:33:22";
// 日期格式化类
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式(为了转换成功)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
NSString *newStr = [fmt stringFromDate:date];
NSLog(@"%@", date);
NSLog(@"%@", newStr);
}
pragma mark -- 02 时间字符串转为NSDate,并获得和当前时间的时间差(单位秒)
//写成一个方法了,要运行直接调用就好
-(void)dateCompare1
{
// 时间字符串(自己写的时间)
NSString *createdAtString = @"2016-07-13 15:28:00";
//时间转码
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
//时间转码格式
//时间样式
// yyyy 年 MM 月 dd 日 HH 24小时 hh 12小时 mm 分钟 ss 秒钟 Z 时区
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//将字符串时间按当前转码方式转换为NSDate类型
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
//转换后的时间和当前手机时间做比较(两种方法)
// 手机当前时间
// NSDate *nowDate = [NSDate date];
// 获得createdAtDate和nowDate的时间间隔(间隔多少秒)
// NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];
//第二种方法:直接调用苹果封装的方法
NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];
//打印出来的是两者间隔的秒数
NSLog(@"%f", interval);
}
pragma mark -- 03 两个时间字符串的比较,比较的属性有(年月日时分秒)
-(void)dateCompare2
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// 时间字符串1
NSString *createdAtString = @"2016-07-01 09:10:05";
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
// 时间字符串2
NSString *otherString = @"2016-07-13 08:56:45";
NSDate *otherDate = [fmt dateFromString:otherString];
// 获得NSCalendar(日历类)
NSCalendar *calendar = nil;
if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
} else {
calendar = [NSCalendar currentCalendar];
}
// 获得日期之间的间隔
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];
//这个打印值是一个枚举值
NSLog(@"%@", cmps);
#打印结果
Calendar
Year: 0 //年相差为0
Month: 0 //月相差为0
Day: 11
Hour: 23
Minute: 46
Second: 40
}
pragma mark -- 04 判断时间字符串和当前手机时间的大小
-(void)dateCompare
{
// 时间字符串
NSString *createdAtString = @"2016-07-13 15:56:05";
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
// 手机当前时间
NSDate *nowDate = [NSDate date];
/**
NSComparisonResult的取值
NSOrderedAscending = -1L, // 升序, 越往右边越大
NSOrderedSame, // 相等
NSOrderedDescending // 降序, 越往右边越小
*/
// 获得比较结果(谁大谁小)
NSComparisonResult result = [nowDate compare:createdAtDate];
if (result == NSOrderedAscending) { // 升序, 越往右边越大
NSLog(@"createdAtDate > nowDate");
} else if (result == NSOrderedDescending) { // 降序, 越往右边越小
NSLog(@"createdAtDate < nowDate");
} else {//两者相等
NSLog(@"createdAtDate == nowDate");
}
}
pragma mark -- 05 获取日期元素
/**
* 日期元素 : 年月日时分秒
*/
-(void) getComponentsOfDate
{
// 时间字符串
NSString *string = @"2016-07-13 09:10:05";
// 日期格式化类
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式(为了转换成功)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
// 利用NSCalendar处理日期
//初始化
NSCalendar *calendar = [NSCalendar currentCalendar];
//获取日期元素的方法
NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date];
NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date];
NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date];
NSLog(@"%zd %zd %zd", month, hour, minute);
}