OC-053.NSDate类、NSDateFomatter类、NSCalendar类、NSDateComponents类---ios时间类

太官方的解释我不写了,我就按我目前自己的理解;

NSDate类是一个绝对的时间。它就是一个时间点,它是进行日历计算的基础。

//******1.创建一个当前时间:是一个格林威治标准时间,本初子午线穿过的地方,经度为0的地方
        NSDate *date = [NSDate date];     
        NSLog(@"%@",date);//打印 0时区的时间

//******2.日期间的比较
//        NSString *str1 = @"1987-1-21 10:10:10 ";
        NSString *str2 = @"2015-10-1 12:12:12 ";
        NSDate *datestr2 = [fmt dateFromString:str2];
        NSLog(@"%@",datestr2);
        //2.1使用compare方法 返回一个枚举
        NSComparisonResult rs = [datestr1 compare:datestr2];
        if (rs == NSOrderedSame) {
            NSLog(@"日期相同");
        }else if (rs == NSOrderedDescending){
            NSLog(@"datestr1 > datestr2");
        }else{
            NSLog(@"datestr1 < datestr2");
        }
        //2.2 找出较早的日期
        NSDate *earlierDate = [datestr1 earlierDate:datestr2];
        NSLog(@"%@",earlierDate);
        //2.3 找出较晚的日期
        NSDate *laterDate = [datestr2 laterDate:datestr1];
        NSLog(@"%@",laterDate);
        //2.4 得出一个离现在距离多少秒的一个时间 Interval:间隔
        NSTimeInterval time = 20; //是一个double的别名 时间间隔   基本单位为秒
        NSLog(@"%lf",time);
        NSDate *dateNew = [NSDate dateWithTimeIntervalSinceNow:time];
        NSLog(@"%@",dateNew);


NSDateFomatter类是一个日历类,它默认以公历(即阳历)为参考,它可以设置日期的表现格式,可以转NSString和NSDate。

//2.日期格式化的对象
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];//创建一个对象
        NSLog(@"%@",fmt.dateFormat);
        fmt.dateFormat = @"yyyy-MM-dd hh:mm:ss  ";//设置日期的格式化方式

//      yyyy:年  MM:月 dd:日   hh或HH:24小时制  mm:分  ss:秒
//      z:GMT+8  Z:+0800  都表示时区,方式不同
        
        //3.日期转格式化字符串
        NSString *strDate = [fmt stringFromDate:date];
        NSLog(@"%@",strDate);
        
        //4.日期字符串转NSDate
        NSString *str1 = @"1987-1-21 10:10:10 ";
        NSDate *datestr1 = [fmt dateFromString:str1]; //返回的还是一个0时区的date
        NSLog(@"%@",datestr1);


NSCalendar类把世界上现存的常用的历法进行了封装,既提供了不同历法的时间信息,又支持日历的计算

NSDateComponents类是一个保存日期的组成部分,包括年、月、日、星期、等等。它可以算作一个日期的数据库。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
//******NSCalendar 日历,主要用于日期的计算
//******NSDateComponents 用来存放日期的组成部分
        //1.创建一个现在的日历,得到的是中国的公历 current:现在的、当前的 (获得当前的逻辑时间)
        NSCalendar *calendar = [NSCalendar currentCalendar];
//        NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
        NSDate *date = [NSDate date];
        //2.通过日历的方法,得到时间的每一个部分---自动计算时区
        NSDateComponents *cp = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour fromDate:date];
        NSLog(@"%zd-%zd-%zd-%zd",cp.year,cp.month,cp.day,cp.hour);
        
        //3.计算2个时间的差值,NSCalendarUnitYear计算年的差值
        NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:60];//创建一个时间
        NSLog(@"%@",date2);
        //NSCalendarMatchStrictly:严格匹配
        NSDateComponents *cp2 = [calendar components:NSCalendarUnitYear fromDate:date2 toDate:date options:NSCalendarMatchStrictly];
        cp2.month = 20;//可以通过点语法赋值
        NSLog(@"%zd-%zd",cp2.year,cp2.month);//打印45-20
        //4.NSCalendar 转 NSDate
        cp.year = 2015;
        cp.month = 12;
        cp.day = 16;
        cp.hour = 20;
        NSDate *date3 = [calendar dateFromComponents:cp];
        NSLog(@"%@",date3);
        
        //5.当前的日期加上一个时间
        NSDate *dateNow = [NSDate date];
        NSLog(@"%@",dateNow);
        NSDateComponents *comp = [[NSDateComponents alloc] init];
        comp.year = 2;
        comp.month = 3;
        //加上2年3个月
        NSDate *dateNew = [calendar dateByAddingComponents:comp toDate:dateNow options:NSCalendarMatchStrictly];
        NSLog(@"%@",dateNew);
   
    }
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>