NSDate - 常用方法
1. 初始化
NSDate *now = [NSDate date]; ==> 只要通过 date 方法创建的对象, 就已经保存了当前的时间
NSTimeZone *zone = [NSTimeZone systemTimeZone]; ===>>> 获取当前所处的时区
NSInteger seconds = [zone secondsFromGMTForDate: now] ===>>> 获取当前时区和指定时间的时间差
NSDate *locationNow = [now dateByAddingTimeInterval: seconds] ===>>>在 now 的基础上,追加时区之间的时间差,获得准确的当前时间
2. 格式转换
NSDateFormatter *formatter = [[NSDateFormatter alloc]init]
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"
3. NSDate转NSString
NSString *str = @“2015-12-15 08:02:03 +0000”;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @“yyyy-MM-dd HH:mm:ss Z”;
NSDate *date = [formatter dateFromString : str];
==>>>注意: 从 NSString==>>NSDate, 那么 dateFormat 的格式必须和字符串中的时间格式一致.
4. NSString转NSDate
NSSting *newTimeStr = @"2016/5/22 22:37"
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";
NSDate *date = [formatter dateFromString: newTimeStr];
NSLog(@"--%@--",date);
NSCalendar - 常用方法
1. 获取当前时间的日历格式
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *cmps =[calendar components:枚举类型的参数 fromDate: now];
NSCalendarUnit type = NSCalendarUnitYear |
NSCalendarUnitMonth |
NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute |
NSCalendarUnitSecond;
2. 比较两个时间差
//获得过去的时间
NSString *str = @"2015-06-29 07:05:26 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSDate *date = [formatter dateFromString:str];
//获得当前时间
NSDate *now = [NSDate date];
//比较两个时间
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit type = NSCalendarUnitYear |
NSCalendarUnitMonth |
NSCalendarUnitDay |
NSCalendarUnitHour |
NSCalendarUnitMinute |
NSCalendarUnitSecond;
NSDateComponents *cmps = [calendar components:type fromDate:date toDate:now options:0];
NSLog(@"%ld年%ld月%ld日%ld小时%ld分钟%ld秒钟", cmps.year, cmps.month, cmps.day, cmps.hour, cmps.minute, cmps.second);