NSDate对象表示一个具体的时间点,存储的是世界标准时间,使用的时候需要转换为本地时间。
NSDate详细介绍
//返回世界标准时间,与本地时间相差8小时
NSDate *date = [NSDate date];
NSLog(@"date:==%@",date);
//获取当前系统时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];
//世界标准时间和当前系统时区时间的时间差
NSInteger interval = [zone secondsFromGMTForDate:date];
NSLog(@"interval:%lu",interval); //28800
//得到本地时间
NSDate *now = [date dateByAddingTimeInterval:interval];
NSDate *now1 = [NSDate dateWithTimeIntervalSinceNow:interval];
NSLog(@"now:==%@",now);
NSLog(@"now1:==%@",now1);
NSDateFormatter的引入
//NSDate -> NSString
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss"; //指定格式
NSString *str1 = [formatter stringFromDate:date];
NSLog(@"str:%@",str1);
//NSString -> NSDate
NSString *str2 = @"2015-11-23 19:53:24";
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
formatter2.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date2 = [formatter2 dateFromString:str2];
NSLog(@"str2:%@",date2);
NSCalendar的使用
//日历对象格式化后的对象(存储年、月、日、时、分、秒)
-(NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;
NSDate *date3 = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar]; //创建日历对象
NSCalendarUnit type = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond; //设置日历格式
NSDateComponents *cmps = [calendar components:type fromDate:date3];
NSLog(@"cmps:%@",cmps);
NSLog(@"year:%lu",cmps.year);
NSLog(@"month:%lu",cmps.month);
NSLog(@"day:%lu",cmps.day);
NSLog(@"hour:%lu",cmps.hour);
NSLog(@"minute:%lu",cmps.minute);
NSLog(@"second:%lu",cmps.second);
//比较两个日期的差距
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts;
NSString *time11 = @"2015-11-23 19:53:24";
NSString *time12 = @"2015-12-23 19:53:24";
NSDateFormatter *formatter11 = [[NSDateFormatter alloc] init];
formatter11.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date11 = [formatter11 dateFromString:time11];
NSDate *date12 = [formatter11 dateFromString:time12];
NSCalendar *calendar11 = [NSCalendar currentCalendar];
NSCalendarUnit type11 = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond; //设置日历格式
NSDateComponents *cmps11 = [calendar11 components:type11 fromDate:date11 toDate:date12 options:0];
NSLog(@"相差%lu年%lu月%lu日%lu时%lu分%lu秒",cmps11.year,cmps11.month,cmps11.day,cmps11.hour,cmps11.minute,cmps11.second);