oc 知识总结五(NSDate)

本文详细介绍了iOS开发中日期类(NSDate)的基本用法,包括创建日期对象的方法、日期比较、获取当前年月日时分秒以及时间戳转换等核心功能。同时,阐述了日期格式化工具(NSDateFormatter)的使用,提供了丰富的示例代码,帮助开发者掌握如何在不同语言和国际环境下展示日期。此外,还介绍了日期比较方法和日期格式化符号对照表,为开发者在日期处理上提供了全面的指南。

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

NSDate:用来处理日期的类
NSDateFormatter:用来处理日期与字符床之间的转换

1、日期类的常用处理方法

(1)

(2)NSLocale代表一个语言、国际环境,比如大陆的简体中文,就可以通过NSLocale对象来代表。同样的一个日期,在不同的语言、国际环境下,显示出来的字符串是不同的。

1>输出格林威治时间
代码部分:

        //创建当前日期对象

        NSDate *nowDate=[NSDatedate];

        NSLog(@"当前日期:%@",nowDate);//格林威治时间


输出结果:

2>输出北京时间
代码部分:
       NSDate *nowDate=[NSDatedate];

       NSLog(@"%@",[nowDatedescriptionWithLocale:[NSLocalecurrentLocale]]);//中国标准日期,本地时间


输出结果:

2、创建日期对象的方法

       // 方法一:创建当前日期对象

        NSDate *nowDate=[NSDate date];

        NSLog(@"当前日期:%@",nowDate);//格林威治时间

        NSLog(@"%@",[nowDate descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期,本地时间

        //方法二:根据与当前时间的间隔秒数创建日期

        NSDate *threeMinuteAge=[NSDate dateWithTimeIntervalSinceNow:-60*60*3];

        NSLog(@"%@",[threeMinuteAge descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期

        //方法三:根据与1970.1.1的时间间隔秒数创建日期

        NSDate *date19700102=[NSDate dateWithTimeIntervalSince1970:24*60*60];

        NSLog(@"%@",[date19700102 descriptionWithLocale:[NSLocale currentLocale]]);//中国标准日期,本地时间

        //方法四:根据与2001.1.1的时间间隔秒数创建日期(0点开始)

        NSDate *date20010102=[NSDate dateWithTimeIntervalSinceReferenceDate:24*60*60];

        NSLog(@"%@",date20010102);//格林威治时间

        //方法五:根据指定日期的时间间隔秒数创建日期

        NSDate *dateThreeHoursLater=[NSDate dateWithTimeInterval:3*60*60 sinceDate:date20010102];

        NSLog(@"%@",dateThreeHoursLater);//格林威治时间

        //方法六:创建日期对象的方式:根据日期格式器和对应的日期字符串创建日期对象

       //日期格式器NSDateFormatter(字符串-》日期或者日期-》字符串)

        //想要得到的格式是:2015-08-06 13:21:35  yyyy-MM-dd HH:mm:ss

        //创建一个日期格式器

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

        //设置想要的格式(指定格式器的处理格式)

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

        //将日期按照指定格式转换成字符串(stringFromDate

        NSString *dateStr=[formatter stringFromDate:nowDate];

        NSLog(@"datastr=%@",dateStr);

        //方法六:创建日期对象的方式:根据日期格式器和对应的日期字符串创建日期对象

        NSDate *dateFormatter=[formatter dateFromString:@"2015-08-06 13:21:35" ];

        NSLog(@"date=%@",dateFormatter);

输出结果:


3、日期的比较

(1)日期的比较1、(NSCompare)有三种结果:1. NSOrderedSame 等于2. NSOrderedDescending 大于3.  NSOrderedAscending 小于

       NSComparisonResult result=[date19700102 compare:date20010102];

        if(result==NSOrderedSame){

            NSLog(@"date19700102=date20010102");

        }else if(result==NSOrderedDescending){

            NSLog(@"date19700102>date20010102");

        }else{

           NSLog(@"date19700102<date20010102");

        }

(2)日期的比较2isEqualToDate laterDate earlierDate

4、获取当前的年、月、日、时、分、秒

(1)方式一:

//        当前年份

//        当前月份

//        当前日

//        当前时

//        当前分

//        当前秒

        [formatter setDateFormat:@"yyyy"];

        NSString *year=[formatter stringFromDate:nowDate];

        NSLog(@"year=%@",year);

        [formatter setDateFormat:@"MM"];

        NSString *month=[formatter stringFromDate:nowDate];

        NSLog(@"month=%@",month);

        [formatter setDateFormat:@"dd"];

        NSString *day=[formatter stringFromDate:nowDate];

        NSLog(@"day=%@",day);

        [formatter setDateFormat:@"HH"];

        NSString *hour=[formatter stringFromDate:nowDate];

        NSLog(@"hour=%@",hour);

        [formatter setDateFormat:@"mm"];

        NSString *minute=[formatter stringFromDate:nowDate];

        NSLog(@"minute=%@",minute);

        [formatter setDateFormat:@"ss"];

        NSString *second=[formatter stringFromDate:nowDate];

        NSLog(@"second=%@",second);


输出结果:


(2)方式2:

       NSDate *nowDate=[NSDatedate];

        NSCalendar *cal=[NSCalendar currentCalendar];

        unsigned int unitFlags=NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit;


        NSDateComponents *n=[cal components:unitFlags fromDate:nowDate];

        NSInteger nowYear=[n year];

        NSInteger nowMonth=[n month];

        NSInteger nowDay=[n day];

        NSInteger nowHour=[n hour];

        NSInteger nowMinute=[n minute];

        NSInteger nowSecond=[n second];

        NSLog(@"年:%ld,月:%ld,日:%ld,时:%ld,分:%ld,秒:%ld",nowYear ,nowMonth,nowDay,nowHour,nowMinute,nowSecond);


输出结果:


5、时间戳:(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术的一种变种的应用。

某一日期到1970年的秒数的大小,称为该日期的时间戳。

6、日期格式器(NSDateFormatter):功能就是完成NSDate与NSString之间的转换。


7、日期格式化说明符号对照表

内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值