NSDate:表示一个具体的时间点
当前时间
NSDate * now = [[NSDate alloc] init];
now = [NSDate date];
NSLog(@"now=%@",now);
时间格式化
NSDateFormatter * f = [[NSDateFormatter alloc] init];
f.dateFormat = @"yyyy-MM-dd";
时间转字符串NSLog(@"%@",[f stringFromDate:now]);
时间增减
NSString * currDateStr = [f stringFromDate:now];
NSDate * currDate = [f dateFromString:currDateStr];
NSDate * yesterday = [[NSDate date] dateByAddingTimeInterval:-86400];
NSDate * tomorrow = [[NSDate date] dateByAddingTimeInterval:86400];
字符串转时间
NSString * todayStr = @"2018-10-16";
yesterday = [f dateFromString:todayStr];
NSLog(@"%@",yesterday);
日期转时间戳
float ts = [yesterday timeIntervalSince1970];//1970到现在的时间戳
NSLog(@"%f",ts);
float ts1 = [yesterday timeIntervalSinceNow];//时间戳差值
NSLog(@"yesterday-当前时间戳=%f",ts1);//-120331.656250
float ts2 = [yesterday timeIntervalSinceDate:currDate];//时间戳差值
NSLog(@"yesterday-currDate=%f",ts2);
时间戳转日期
NSDate * date1 = [NSDate dateWithTimeIntervalSince1970:ts];
NSLog(@"%@",date1);
NSCalendar:用于处理时间相关问题。比如比较时间前后,计算日期所在周等
获取年份、月份、日期、小时、分钟、秒、星期等
NSCalendar * calendar = [NSCalendar currentCalendar];
NSDate * now = [NSDate date];
NSCalendarUnit * unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond ;
NSDateComponents * components = [calendar components:unit fromDate:now];
NSLog(@"%@",components);//月份:components.year
比较两个日期的差值
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
NSDate * date1 = [formatter dateFromString:@"2018-10-01 8:00:00"];
NSDate * date2 = [formatter dateFromString:@"2019-12-01 9:00:00"];
components = [calendar components:unit fromDate:date1 toDate:date2 options:0];
NSLog(@"%@",components);