iOS学习 - NSDate理解

本文探讨了NSDate对象在iOS开发中的作用,它用于表示特定时间点,并以世界标准时间存储。通过使用NSDateFormatter和NSCalendar,可以方便地进行日期格式化和本地化转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSDate对象表示一个具体的时间点,存储的是世界标准时间,使用的时候需要转换为本地时间。

NSDate详细介绍

//返回世界标准时间,与本地时间相差8小时
NSDate *date = [NSDate date];
NSLog(@"date:==%@",date);

//获取当前系统时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];  

//世界标准时间和当前系统时区时间的时间差
NSInteger interval = [zone secondsFromGMTForDate:date];  
NSLog(@"interval:%lu",interval);  //28800

//得到本地时间
NSDate *now = [date dateByAddingTimeInterval:interval];
NSDate *now1 = [NSDate dateWithTimeIntervalSinceNow:interval];
NSLog(@"now:==%@",now);
NSLog(@"now1:==%@",now1);

NSDateFormatter的引入

//NSDate -> NSString
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";  //指定格式
NSString *str1 = [formatter stringFromDate:date];
NSLog(@"str:%@",str1);

//NSString -> NSDate
NSString *str2 = @"2015-11-23 19:53:24";
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
formatter2.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date2 = [formatter2 dateFromString:str2];
NSLog(@"str2:%@",date2);

NSCalendar的使用

//日历对象格式化后的对象(存储年、月、日、时、分、秒)
-(NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date;  

NSDate *date3 = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];  //创建日历对象
NSCalendarUnit type = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;  //设置日历格式
NSDateComponents *cmps = [calendar components:type fromDate:date3];
NSLog(@"cmps:%@",cmps);
NSLog(@"year:%lu",cmps.year);
NSLog(@"month:%lu",cmps.month);
NSLog(@"day:%lu",cmps.day);
NSLog(@"hour:%lu",cmps.hour);
NSLog(@"minute:%lu",cmps.minute);
NSLog(@"second:%lu",cmps.second);

//比较两个日期的差距
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts;

NSString *time11 = @"2015-11-23 19:53:24";
NSString *time12 = @"2015-12-23 19:53:24";

NSDateFormatter *formatter11 = [[NSDateFormatter alloc] init];
formatter11.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date11 = [formatter11 dateFromString:time11];
NSDate *date12 = [formatter11 dateFromString:time12];
NSCalendar *calendar11 = [NSCalendar currentCalendar];
NSCalendarUnit type11 = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;  //设置日历格式

NSDateComponents *cmps11 = [calendar11 components:type11 fromDate:date11 toDate:date12 options:0];
NSLog(@"相差%lu年%lu月%lu日%lu时%lu分%lu秒",cmps11.year,cmps11.month,cmps11.day,cmps11.hour,cmps11.minute,cmps11.second);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值