iOS开发之NSDate

本文主要介绍关于NSDate的相关知识。

首先看一下它的简单使用,如下:

- (void)testNSDate {
    
    // NSDate初始化方法
    // 当前时间
    NSDate *nowDate1 = [NSDate date];
    NSLog(@"--1--%@", nowDate1);
    NSLog(@"=================================");
    
    // 距离当前时间后2秒的时间
    NSDate *nowDate2 = [NSDate dateWithTimeInterval:2.0 sinceDate:[NSDate date]];
    NSLog(@"--2--%@", nowDate2);
    NSLog(@"=================================");
    
    // 距离1970 01 01 00:00:00后20000秒的时间
    NSDate *nowDate3 = [NSDate dateWithTimeIntervalSince1970:20000.0];
    NSLog(@"--3--%@", nowDate3);
    NSLog(@"=================================");
    
    // 距离当前时间后10秒的时间
    NSDate *nowDate4 = [NSDate dateWithTimeIntervalSinceNow:10.0];
    NSLog(@"--4--%@", nowDate4);
    NSLog(@"=================================");
    
    // 以2001-01-01 00:00:00的偏移秒数来初始化
    NSDate *nowDate5 = [NSDate dateWithTimeIntervalSinceReferenceDate:0];// 2001
    NSLog(@"--5--%@", nowDate5);
    NSLog(@"=================================");
    
    
    NSDate *earlyDate = [nowDate1 earlierDate:nowDate2];// 返回两者时间较早的日期
    NSDate *laterDate = [nowDate1 laterDate:nowDate2];// 返回两者时间较晚的日期
    NSLog(@"较早的日期:%@", earlyDate);
    NSLog(@"较晚的日期:%@", laterDate);
}
我们还可以利用NSDate将其他格式的日期转化成NSDate:如:Tue Sep 01 15:05:02 +0800 2015 -> NSDate

- (void)testTransDate {
    // 将其他格式的日期转化成NSDate:如:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
    // 给定一个日期字符串,转化成日期格式
    NSString *someDate = @"Tue Sep 01 15:05:02 +0800 2015";
    
    // 设置时间格式化器
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 设置日期格式
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";// 设置上面给出的日期格式
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];// 上面日期格式的本地化设置
    
    // 上面是告诉fmt要转化的日期是什么样的格式
    
    // 利用fmt转化:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
    NSDate *date = [fmt dateFromString:someDate];// 转化后的NSDate类型,后面就可以对这样日期格式进行格式化
    
    fmt.dateFormat = @"日期:yyyy MM dd";// 将NSDate转化成“日期:2015 09 01”格式
    
    NSLog(@"%@", [fmt stringFromDate:date]);
}
我们还可以利用NSDate对给定的日期(NSDate类型)和现在日期的判断(date 和 nowDate的判断),如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 给定一个日期字符串,转化成日期格式
    NSString *someDate = @"Tue Sep 01 15:05:02 +0800 2015";
    
    // 设置时间格式化器
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    // 设置日期格式
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";// 设置上面给出的日期格式
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];// 上面日期格式的本地化设置
    
    // 上面是告诉fmt要转化的日期是什么样的格式
    
    // 利用fmt转化:Tue Sep 01 15:05:02 +0800 2015 -> NSDate
    NSDate *date = [fmt dateFromString:someDate];// 转化后的NSDate类型,后面就可以对这样日期格式进行格式化
    
    
    // 给定的日期(NSDate类型)和现在日期的判断(date 和 nowDate的判断)
    // 1.是否是同一年
    NSDate *nowDate = [NSDate date];// 获取当前时间
    
//    int unit = NSCalendarUnitYear;// 获取日期中的年份
//    
//    NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
//    NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
//    
//    if (nowComponets.year == componets.year) {
//        NSLog(@"是同一年");
//    }else {
//        NSLog(@"不是同一年");
//    }
    
    
//    // 2.是否是同年同月
//    int unit = NSCalendarUnitYear | NSCalendarUnitMonth;// 获取日期中的年份和月份
//    
//    NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
//    NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
//    
//    if (nowComponets.year == componets.year
//        && nowComponets.month == componets.month) {
//        NSLog(@"是同年同月");
//    }else {
//        NSLog(@"不是同年同月");
//    }
    
    // 3.是否是同年同月
    int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;// 获取日期中的年份、月份和日期
    
    NSDateComponents *componets = [[NSCalendar currentCalendar] components:unit fromDate:date];
    NSDateComponents *nowComponets = [[NSCalendar currentCalendar] components:unit fromDate:nowDate];
    
    if (nowComponets.year == componets.year
        && nowComponets.month == componets.month
        && nowComponets.day == componets.day) {
        NSLog(@"是同年同月同日");
    }else {
        NSLog(@"不是同年同月同日");
    }

}
NSDate的使用就介绍到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值