美文网首页
NSDate的用法

NSDate的用法

作者: MichalWilson | 来源:发表于2017-04-26 20:42 被阅读24次

常用的时间格式

formatter.dateFormat =@"yyyy年MM月dd日 HH时mm分ss秒 Z";

formatter.dateFormat =@"yyyy/MM/dd HH/mm/ss Z";

formatter.dateFormat =@"MM-dd-yyyy HH-mm-ss";

// 时间字符串NSString*str =@"2014-03-11 06:44:11 +0800"; 

// 1.创建一个时间格式化对象

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

// 2.格式化对象的样式/z大小写都行/格式必须严格和字符串时间一样

formatter.dateFormat =@"yyyy-MM-dd HH:mm:ss Z";

// 3.利用时间格式化对象让字符串转换成时间 (自动转换0时区/东加西减)

NSDate*date = [formatter dateFromString:str];

NSLog(@"%@",date);

3.时间转换成字符串

NSDate*now = [NSDatedate];

// 1.创建一个时间格式化对象

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

// 2.设置时间格式化对象的样式

formatter.dateFormat =@"yyyy年MM月dd日 HH时mm分ss秒 +0800";

// 3.利用时间格式化对象对时间进行格式化

NSString*str = [formatter stringFromDate:now];

NSLog(@"%@",str);

4.利用日历比较两个时间的差值

// 时间字符串

NSString*str =@"2012-03-11 06:44:11 +0800";

// 1.创建一个时间格式化对象

NSDateFormatter*formatter = [[NSDateFormatteralloc] init];

// 2.格式化对象的样式/z大小写都行/格式必须严格和字符串时间一样

formatter.dateFormat =@"yyyy-MM-dd HH:mm:ss Z";

// 3.字符串转换成时间/自动转换0时区/东加西减

NSDate*date = [formatter dateFromString:str];

NSDate*now = [NSDatedate];

// 注意获取calendar,应该根据系统版本判断

NSCalendar*calendar = [NSCalendarcurrentCalendar];NSCalendarUnittype =NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;

注意:使用[NSCalendar currentCalendar],iOS8以后会有bug,要加判断

// 判断方法一:

// 宏书写注意:建议不要全是小写,要有大写,否则书写时候参数有ken'neng不提示

#define iOS(version) ([UIDevice currentDevice].systemVersion.doubleValue >= (version))

NSCalendar*calendar =nil;

if([UIDevicecurrentDevice].systemVersion.doubleValue >=8.0) {    

calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

}else{   

 calendar = [NSCalendarcurrentCalendar];

}

// 判断方法二:

NSCalendar*calendar =nil;

// NSCalendar不提示这个respondsToSelector:方法,但是的确有这个方法if([NSCalendarrespondsToSelector:@selector(calendarWithIdentifier:)]) {    

calendar = [NSCalendarcalendarWithIdentifier:NSCalendarIdentifierGregorian];

}else{   

 calendar = [NSCalendarcurrentCalendar];

}

// 4.获取了时间元素

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);

控制台的输出

//时间相加:先把时间转换成timeInterval,然后再用方法dateByAddingTimeInterval相加,就得到了新的时间

int addDays = 10;

NSDateFormatter *dateFormatter = [NSDateFormatter new];

[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSDate *myDate = [dateFormatter dateFromString:@"2015-06-03"];

NSDate *newDate = [myDate dateByAddingTimeInterval:60 * 60 * 24 * addDays];

NSLog(@"%@",[dateFormatter stringFromDate:newDate]);

相关文章

网友评论

      本文标题:NSDate的用法

      本文链接:https://www.haomeiwen.com/subject/npjwzttx.html