NSDate是一个日期类,在学习之前你可以了解一下UTC- 世界标准时间。
1、NSDate简介
//系统当前时间,不过有时区差,比北京时间晚8小时
NSDate* date1=[NSDate date];
NSLog(@"现在时间:%@", date1);
//1.返回北京时间
NSLocale* locale=[NSLocale currentLocale];
NSLog(@"系统当前时间:%@",[date1 descriptionWithLocale:locale]);
//2.返回北京时间
NSTimeZone* zone=[NSTimeZone systemTimeZone]; //时区
NSUInteger interval=[zone secondsFromGMTForDate:date1];
NSDate* localdate=[date1 dateByAddingTimeInterval:interval];
NSLog(@"系统当前时间按:%@",localdate);
//3.返回北京时间
NSCalendarDate* cdate=[NSCalendarDate calendarDate]; //日历
NSLog(@"系统当前时间按:%@",cdate);
//此方法以秒为单位,返回距离现在的时间点 ;正数表示之后,负数表示之前
NSDate* date2=[NSDate dateWithTimeIntervalSinceNow:3600*24];//一天后
NSDate* date3=[NSDate dateWithTimeIntervalSinceNow:-3600*72];//三天前
//距离1970-01-01的时间点
NSDate* date4=[NSDate dateWithTimeIntervalSince1970:3600*24*366*20];
NSLog(@"1970年后20年的时间:%@",date4);
//时间早晚的比较
NSDate* earlydate=[date1 earlierDate:date2]; //返回较早的一个时间
NSLog(@"date1与date2中时间较早的一个:%@",earlydate);
NSDate* laterdate=[date1 laterDate:date2]; //返回较晚的一个时间
NSLog(@"date2与date2中时间较晚的一个:%@",laterdate);
//判断两个日期是否相等
BOOL result=[date1 isEqualToDate:date2];
//时间的比较 返回枚举值
NSComparisonResult result=[date1 compare:date2];
if (result==NSOrderedAscending)
NSLog(@"date1较date2早");
else if(result==NSOrderedSame)
NSLog(@"date1与date2日期相等");
else if(result==NSOrderedDescending)
NSLog(@"date1较date2晚");
//两个时间差 以秒为单位
NSTimeInterval interval2=[date1 timeIntervalSinceDate:date2];
NSLog(@"date1与date2差%f秒",interval2);
//返回很久之后的时间
NSDate* date5=[NSDate distantFuture];
NSLog(@"很久之后%@", date5);
//返回很久之前的时间
NSDate* date6=[NSDate distantPast];
NSLog(@"很久之前%@", date6);
打印结果
2、NSDateFormatter 简介
NSDateFormatter是 NSDate与NString之间的桥梁,它能将NSDate转换成NSString,也能将时间字符串以一定格式转换成NDDate。
1> NSDate 转 NSString
NSDateFormatter *df = [NSDateFormatter alloc] init];//初始化日期格式器
//设置输出的字符串日期格式
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //HH表示输出结果是24小时制;hh表示12小时制
//用NSDateFormatter将日期和字符串关联起来
NSString* dateString=[df stringFromDate:[NSDate date]];
NSLog(@"%@", dateString);
2> NSString 转 NSDate
NSDateFormatter* df1=[[NSDateFormatter alloc]init];//初始化日期格式器
//设置转换成日期的格式 若你的日期字符串中的时间是以24小时制给出 则格式只能用HH
[df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//关联
NSDate* date=[df1 dateFromString:@"2015-10-11 15:20:20"];
NSLog(@"%@",date);
打印结果
NSDateFormatter格式化参数如下:
G: 公元时代
yy: 年的后2位
yyyy: 完整年
MM: 月, 显示为 1-12
MMM: 月,显示为英文月份的缩写 如Jan
MMMM: 月,显示为英文月份的全称 如Janualy
dd: 日,2位数表示, 如 02、12
d: 日,正常显示 如 2、12
EEE: 简称星期几 如Sun
EEEE: 全称星期几 如Sunday
aa: 上下午 AM或PM
HH:24小时制
hh:12小时制
m:分 正常显示
mm:分 2位数显示
s:秒 正常显示
ss:秒 2位数显示