iOS阶段学习第15天笔记(NSDate操作)
iOS学习(OC语言)知识点整理
一、OC关于NSDate类的操作实例代码
1 //默认直接显示对象,显示的是格林威治时间 2 //获取当前日期时间的实例方法 3 NSDate *date1=[[NSDate alloc]init]; 4 NSLog(@"date1:%@",date1); 5 8 //获取当前日期时间的方法二:类方法 9 NSDate *date2=[NSDate date]; 10 NSLog(@"date2:%@",date2); 11 12 //获取从1970年1月1日00:00到date2的秒数 13 NSTimeInterval interval= [date2 timeIntervalSince1970]; 12 //循环操作为了体现时间差 13 for(int i=0;i<10000;i++){} 14 //计算两个时间差(秒数) 15 interval=[date2 timeIntervalSinceDate:date1]; 16 17 //date2距现在的时间差 18 interval=[date1 timeIntervalSinceNow]; 19 NSLog(@"%f",interval); 20 21 //实例方法:得到date2的后一天的时间对象 22 NSDate *date3=[date2 dateByAddingTimeInterval:24*3600]; 23 NSLog(@"date3:%@",date3); 24 25 //类方法:得到距date2多少秒后的一个日期时间对象 26 NSDate *date4=[NSDate dateWithTimeInterval:24*3600 sinceDate:date2]; 27 NSLog(@"date4:%@",date4); 28 29 //得到距现在多少秒后的一个日期时间对象 30 NSDate *date5=[NSDate dateWithTimeIntervalSinceNow:3*24*3600]; 31 NSLog(@"date5:%@",date5); 32 33 //获取将来的一个日期时间对象 34 NSDate *date6=[NSDate distantFuture]; 35 NSLog(@"date6:%@",date6); 36 37 //获取过去的一个日期时间对象 38 NSDate *date7=[NSDate distantPast]; 39 NSLog(@"date7:%@",date7); 40 41 //对日期时间对象做格式化操作的类 42 NSDateFormatter *format=[[NSDateFormatter alloc]init]; 43 //设置日期的样式 44 [format setDateStyle:NSDateFormatterMediumStyle]; 45 //设置时间的样式 46 [format setTimeStyle:NSDateFormatterMediumStyle]; 47 NSString *styledate= [format stringFromDate:date1]; 48 NSLog(@"styledate:%@",styledate); 47 //自定义格式字符串 48 [format setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 49 //将NSDate对象转换为字符串 50 NSString *sdate=[format stringFromDate:date1]; 51 NSLog(@"sdate:%@",sdate); 52 53 NSString *str=@"2015-07-10 12:10:30"; 54 //将字符串形式的日期时间转换为NSDate对象(保证字符串的形式与format中的形式一致) 55 NSDate *date8=[format dateFromString:str]; 56 NSLog(@"date8:%@",date8); 57 58 NSDate *newdate=[NSDate date]; 59 //时间格式化字符串 60 NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 61 [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss MMM eee a"]; 62 NSString *strdate = [formatter stringFromDate:newdate]; 63 NSLog(@"%@",strdate); 64 65 //时间字符串转换为时间类型 66 NSDateFormatter * formatter2 = [[NSDateFormatter alloc]init]; 67 NSString * nstr =@"2014年05月01日 10点23分18秒"; 68 [formatter2 setDateFormat:@"yyyy年MM月dd日 hh点mm分ss秒"]; 69 NSDate * date3 = [formatter2 dateFromString:nstr]; 70 //解决时分秒转换不准确问题 71 NSTimeZone *fzone = [NSTimeZone systemTimeZone]; 72 NSInteger finterval = [fzone secondsFromGMTForDate: date3]; 73 NSDate *fDate = [date3 dateByAddingTimeInterval: finterval]; 74 NSLog(@"%@",fDate); 75 76 //获取系统时间的年月日时分秒部分 77 NSCalendar *cal = [NSCalendar currentCalendar]; 78 //Mac 10.10以前的系统使用 NSYearCalendarUnit 79 unsigned int unitFlags = NSCalendarUnitYear |NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond; 80 NSDateComponents *d = [cal components:unitFlags fromDate:newdate]; 81 NSLog(@"年=%ld",[d year]); 82 NSLog(@"月=%ld",[d month]); 83 NSLog(@"日=%ld",[d day]); 84 NSLog(@"时=%ld",[d hour]); 85 NSLog(@"分=%ld",[d minute]); 86 NSLog(@"秒=%ld",[d second]); 87 88 //将传入时间字符串转换成需要的时间格式 89 NSString *dateStr=@"2013-08-13 20:28:40"; 90 NSDateFormatter *format=[[NSDateFormatter alloc] init]; 91 [format setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 92 NSDate *fromdate=[format dateFromString:dateStr]; 93 //解决时分秒转换不准确问题 94 NSTimeZone *fromzone = [NSTimeZone systemTimeZone]; 95 NSInteger frominterval = [fromzone secondsFromGMTForDate: fromdate]; 96 NSDate *fromDate = [fromdate dateByAddingTimeInterval: frominterval]; 97 NSLog(@"fromdate=%@",fromDate); 98