1.NSDate对象用来表示一个具体的时间点。
2.NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示


(1) 日期的创建

+ (instancetype)date;

        NSDate *nowDate = [NSDate date];

     如上直接创建nowDate ,其现实的是0时区,也就是格林威治时间,如果要显示北京时间,需要进行转换

                [nowDate descriptionWithLocale:[NSLocale currentLocale]];  //北京时间

 

(2)利用与当前时间的间隔来进行时间的创建

 + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;

               NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:+60*60*24*30];

      其中加号表示时间往前也就是未来时间点  第一个60是表示的秒 第二个时间是分钟  第三个时间是小时 第四个时间是天数  date1表示的时间是距今未来的第30天

     其中的加号也可以换成减号,来表示过去的时间。

 

(3)利用与指定的时间的间隔来创建日期

+ (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate*)date;

            NSDate *date2 = [NSDate dateWithTimeInterval:+60*3 sinceDate:date1];

      date2 的时间 距 date1的时间又 3 分钟

 

(4)利用与2001年的时间间隔来创建日期

+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;

          NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate: +0 ];

       date3 表示的是与 2001年1月1日0点0分0秒 的时间间隔为 0 。

 

(5)利用与1970年的时间间隔来创建时间

+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

         NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:+60];

(6)未来的某一天

 

+ (NSDate *)distantFuture;

     NSLog(@"%@",[NSDate distantFuture]);

      输出的一直是4001年1月1日

 

(7)过去的某一天

 

+ (NSDate *)distantPast;

    NSLog(@"%@",[NSDate distantPast]);

   输出的一直是0000年12月30日

 

(8)日期格式化

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

       [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss "];

    NSString *dateStr = [formatter stringFromDate:nowDate];

   将日期转换为字符串格式,便于操作。

  其中   yyyy表示年份   MM表示月份   dd表示日期   HH表示小时   mm表示分钟   ss表示秒

 还可以将日期格式的字符串还原成日期

     NSDate *dates = [formatter dateFromString:dateStr];

 

(9)时间比较

       NSComparisonResult result =[date1 compare:date2];

    if(result == NSOrderedDescending)

       {

           NSLog(@"date1 时间晚");

       }else if(result == NSOrderedAscending)

       {

           NSLog(@"date2 时间晚");

           

       }else

       {

           NSLog(@"date1 date2 时间相等");

       }

 

(10)计算时间差

      double dateDifference = [date1 timeIntervalSinceNow];

    date1 与现在时间相差多少秒

 

(11)两时间比较

             NSLog(@"%@",[date1 laterDate:date2]);

    得到较晚的时间,返回的事NSDate类型

 

       NSLog(@"%@",[date1 earlierDate:date2]);

    得到较早的时间,返回的事NSDate类型

 

(12)判断两个日期是否相等

       BOOL isEqual = [date2 isEqualToDate:date2];