ios开发系列之NSDate,NSDateFormatter,NSDateComponents和NSCalendar

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 季度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值