NSDate的使用... components:

本文详细介绍了如何在iOS和Android平台上计算时间差并进行日期格式转换,涉及时间间隔计算、时间区调整及日期组件解析等关键步骤。

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

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
	@autoreleasepool {
		// 1: 获取当前时间
		NSDate * date = [NSDate date];
		//获取的是 0时区的值, 北京是东8区, 需要在当前时间+8, 才能得到正确的北京时间
		NSLog(@"%@", date);

		// 获取时区
		NSTimeZone * zone = [NSTimeZone systemTimeZone];
		NSLog(@"%@", zone);
		// 获取时间间隔...28800秒,
		NSInteger interValue = [zone secondsFromGMTForDate:date];
		NSLog(@"%lu", interValue);

		// 重新生成 本地时间
		NSDate * localDate = [date dateByAddingTimeInterval:interValue];
		NSLog(@"%@", localDate);

		//************************ stone ***

		// 2: 格式化显示时间 ---> 直接显示成东8区的了...
		NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
		// yyyy-MM-dd ---> 固定格式 ; HH:mm:ss ---> HH是24小时制 hh是12小时制
		[formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
		NSLog(@"%@", [formatter stringFromDate:date]);

		[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
		NSString * dateStr = [formatter stringFromDate:date];
		NSLog(@"%@", dateStr);

		//************************ stone ***

		// 计算明天的此刻
		// 方法1: dateByAddingTimeInterval 参数是 秒, 注意
		NSDate * tom = [NSDate date];
		NSLog(@"%@", tom);
		tom = [tom dateByAddingTimeInterval:24 * 60 * 60];
		NSLog(@"%@", tom);

		// 方法2: dateWithTimeIntervalSinceNow 从现在开始 后面参数是多久之后...返回 NSDate
		NSTimeInterval oneDayTime = 24 * 60 * 60;
		NSDate * tom1 = [NSDate dateWithTimeIntervalSinceNow:oneDayTime];
		// 记得一定要格式输出, 不然是 0区的时间.
		NSLog(@"tomorrow now time = %@", [formatter stringFromDate:tom1]);

		//************************ stone ***

		// 计算昨天的此刻
		NSDate * tom2 = [NSDate dateWithTimeIntervalSinceNow:-oneDayTime];
		// 记得一定要格式输出, 不然是 0区的时间.
		NSLog(@"yesterday now time = %@", [formatter stringFromDate:tom2]);

		// 过时的方法, 不推荐使用...
		NSDate * tom3 = [date addTimeInterval:-oneDayTime];
		NSLog(@"%@", tom3);

		//************************ stone ***

		// NSCalendar 日期类, 快速获取 年月日 时分秒 信息
		NSDate * date1 = [NSDate date];

		NSCalendar * cal = [NSCalendar currentCalendar];

		// 时间又被 自动转化成本地时间了, 是东8区的,
		NSDateComponents * com = [cal components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:date1];

		NSLog(@"%ld %ld %ld %ld %ld %ld", com.year, com.month, com.day, com.hour, com.minute, com.second);

		NSLog(@"%@", cal);

		//************************ stone ***

		// 获取两个时间的时间差
		NSString * time1 = @"2015-04-08 20:50:40";
		NSString * time2 = @"2014-04-04 18:45:30";

		NSDateFormatter * fmt = [[NSDateFormatter alloc] init];
		[fmt setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

		NSDate * dateA = [fmt dateFromString:time1];
		NSDate * dateB = [fmt dateFromString:time2];

		int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
		NSDateComponents * comps = [[NSCalendar currentCalendar] components:unit fromDate:dateB toDate:dateA options:0]; // options参数起什么作用...不知道
		NSLog(@"相差%ld年%ld月%ld日%ld小时%ld分钟%ld秒", comps.year, comps.month, comps.day, comps.hour, comps.minute, comps.second);
	}
	return 0;
}

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值