1.NSDate
①NSDate
对象用来表示一个具体的时间点包含日期和时间
②NSDate
是一个类簇(类簇 是一群隐藏在通用接口下的与实现相关的类,使得我们编写的代码可以独立于底层实现)
③NSDate
存储的是GMT
时间,使用的时候会根据当前应用指定的时区进行时间上的增减,以供计算或显示.
typedef double NSTimeInterval; //秒级别的时间间隔
Now //以当前时间为基准
ReferenceDate //以2001/01/01为基准
1970 //以1970/01/01为基准
NSDate的类方法
+(id)dateWithTimeIntervalSince……:(NSTimeInterval)secs //返回以......为基准,然后过了secs秒的时间
+(id)distantFuture; //返回遥远的未来的某一个时间 可以用来暂停定时器 [timer setFireDate:[NSDate distantFuture]];
+(id)distantPast;//返回到很久以前的一个时间
+(instancetype)date; //返回当前时间 可以用来开始定时器 [timer setFireDate:[NSDate date]];
NSDate的实例方法
// 初始化以date为基准,然后过了secsToBeAdded秒的时间对象
-(instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
//返回一个以anotherDate为基准,返回实例保存的时间与anotherDate的时间间隔
-(NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
NSDate对象之间的比较方法
-(BOOL)isEqualToDate:(NSDate *)otherDate;//与otherDate比较,相同返回YES
-(NSDate *)earlierDate:(NSDate *)anotherDate; //与anotherDate比较,返回较早的那个日期`
-(NSDate *)laterDate:(NSDate *)anotherDate;//与anotherDate比较,返回较晚的那个日期
-(NSComparisonResult)compare:(NSDate *)other;
// 该方法用于排序时调用:
// . 当实例保存的日期值与anotherDate相同时返回NSOrderedSame
//. 当实例保存的日期值晚于anotherDate时返回NSOrderedDescending
//. 当实例保存的日期值早于anotherDate时返回NSOrderedAscending
2.NSDateFormatter
NSDateFormatter
时间格式器,用来格式化输出NSDate
对象对应的时间
1.首先创建一个NSDateFormatter对象
NSDateFormatter * formatter = [NSDateFormatter alloc]init];
2.调用属性dateFormat 用一个字符串设置时间格式
formatter.dateFormat = @"HH:mm:ss aa";
3.获取一个时间
NSDate * date = [NSDate date];
4.通过stringFromDate方法将date转成自定义格式的dateStr .
NSString * dateStr = [formatter stringFromDate:date];
//这里还有一个将字符串转成时间的方法:
-(NSDate *)dateFromString:(NSString *)string;
**注意这里的string的格式必须和上面自定义的格式dateStr一致,不然会返回一个(null)**
格式化参数如下:
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份全称,如 Janualy
dd: 日,2位数表示,如02
d: 日,1-2位显示,如 2
EEE: 简写星期几,如Sun
EEEE: 全写星期几,如Sunday
aa: 上下午,AM/PM
H: 时,24小时制,0-23
K:时,12小时制,0-11
m: 分,1-2位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
ms或者S:毫秒
3.NSCalender
NSCalender
日历,该类对世界上现存的常用的历法进行了封装,既提供了不同历法的时间信息,又支持日历的计算
NSCalendar * calendar = [NSCalendar currentCalendar]; //获得一个日历
NSUInteger unitFlags = NSHourCalendarUnit| NSMinuteCalendarUnit|NSSecondCalendarUnit; //得到日历上对应的单元信息
日历上对应的单元信息:
NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit
4.NSDateComponents
NSDateComponents
日期组件,可以给时间提供一个指定的年,月,日,小时,分钟,秒等等,我们可以把NSDateComponents
理解为一个UIDatePicker
.
NSDateComponents * dateComponent = [calendar components:unitFlags fromDate:[NSDate date]];
然后通过dateComponent
对应的属性来取得各个值
dateComponent 对应的属性:
– era 时代
– year 年
– month 月
– day 天
– hour 时
– minute 分
– second 秒
– week 周
– weekday 星期
– weekdayOrdinal 星期序数
– quarter 季度