1.NSDate的介绍和使用
NSDate可以用来表示时间
[NSDate date];返回的就是当前时间
//创建一个日期时间对象,默认是格林威治标准时间
NSDate *date1 = [NSDate date];
//北京是东8区 用date1 加上 8 就是北京时间
NSLog(@"%@",date1);
NSTimeZone *zone = [NSTimeZone systemTimeZone];
2.格式化日期
NSDate *date = [NSDate date];
NSLog(@"%@",date);
NSDateFormatter *formatter = [NSDateFormatter new];
//设置日期的显示格式
// yyyy 表示四位的年
// MM 表示两位的月份
// dd 表示两位的天数
// HH 表示24小时制的小时 小写hh 表示12小时制
// mm 表示两位的分钟数
// ss 表示两位的秒数
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *strDate = [formatter stringFromDate:date];
NSLog(@"%@",strDate);
//简写
[([NSDateFormatter new].dateFormat = @"yyyy-MM-dd HH:mm:ss") stringFromDate:date];
3.计算日期
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//计算明天的此刻
NSTimeInterval t = 60 * 60 * 24;//一天的秒数
NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t];
NSString *timeStr = [formatter stringFromDate:tom];
//计算昨天的时间
NSDate *yesterday = [NSDate date];
NSDate *zt = [yesterday addTimeInteval: -t];
NSString *str = [formatter stringFromDate];
4.日期时间对象
只想获取日期的年 或 月 或 日 或 时 或 分 或秒
NSCalendar 日期类
NSDate *d = [NSDate date];
//获得一个日期类对象
NSCalendar *calendar = [NSCalendar currentCalendar];
//NSCalendarUnit 是一个日期的单元值
NSDateComponents *coms = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d]:
NSLog(@"year:%ld ,month:%ld, day:%ld",coms.year,coms.month,coms.day);
5. 比较两个时间的时间差
NSString *time1 = @"2015-08-01 20:50:00";
NSString *time2 = @"2015-08-18 05:00:52";
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date1 = [formatter dateFromString:time1];
NSDate *date2 = [formatter dateFromString:time2];
NSCalendar *calendar = [NSCalendar currentCalendar];
int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *ndc = [calendar components:unit fromDate:date2 toDate:date1 option:0];
NSLog(@"相差%ld年%ld月%ld日 %ld时%ld分%ld秒",ndc.year,ndc.month,ndc.day,ndc.hour,ndc.minute,ndc.second);