iOS NsDate日期简单的处理

NSDate

获取当前时间

要得到当前时间,创建1个NSDate对象就可以了,将这个对象输出,就是当前时间,得到的时间是格林威治的时间(GMT) 北京时间是GMT+8

    NSDate *date = [NSDate date];
    NSLog(@"%@",date);

格式化输出日期,指定日期输出的格式

● 默认的格式 年-月-日 时:分:秒 +时区

NSDate *date = [NSDate date];
NSLog(@"%@", date);

//1.先要创建1个NSDateFormatter对象,这个对象作用:将1个日期转换成1个指定的格式。 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//2.告诉这个日期格式化器对象要把日期转换个什么样子的。

//yyyy:年份
//MM:月份,
//mm:分钟。
//dd:天.
//hh:12小时
//HH:24小时
//ss:秒

formatter.dateFormat = @"yyyy年MM月dd日 HH点mm分ss秒";

 //3.使用日期格式化器将指定的日期转换指定格式的字符串。
NSString *str =[formatter stringFromDate:date];
NSLog(@"str= %@",str);


- (NSString *)stringFromDate:(NSDate *)date;//将日期类型换换为字符串
- (NSDate *)dateFromString:(NSString*)string;//将字符串转换为日期对象,

注意:NSDate取到的时间是格林威治的时间,
NSDateFormatter转换成字符串以后会转换为当前系统的时区的时间。

时间计算

新增时间的方法

- (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
//参数:新增指定多少秒后的时间

得到东八区的时间

NSDate *d1 =[NSDate dateWithTimeIntervalSinceNow:8*60*60];

传入1个负数就是在当前时间的基础之上减指定的秒数.

求两个时间之间的差

可以实现的效果:可以计算出执行代码所花费的时间。

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;

得到NSDate中的 年 月 日 时 分 秒

● 得到时间的各个部分。可以使用日期格式化器来得到

NSDate *date = [NSDate date];
//1.创建1个日历对象。调用类方法currentCalendar得到1个日历对象

NSCalendar *calendar = [NSCalendar currentCalendar];
//2.指定日历对象取到日期的对象的那些部分,是要取那1个时间对象的部分

NSDateComponents *com = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date];
//返回1个日期组件对象.这个对象中就有指定日期的指定部分

NSLog(@"%ld-%ld-%ld",com.year,com.month,com.day);

NSDate -> NSString

// 创建一个时间格式化对象
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 告诉时间格式化对象, 按照什么样的格式来格式化时间
// yyyy 年
// MM 月
// dd 日
// HH 24小时  hh 12小时
// mm 分钟
// ss 秒钟
// Z 时区
//    formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒 Z";
formatter.dateFormat = @"yyyy-MM-dd HH-mm-ss";

// 利用时间格式化对象对时间进行格式化
NSDate * now = [NSDate date];
NSString *res = [formatter stringFromDate:now];
NSLog(@"res = %@", res);

NSString -> NSDate

//     NSString --> NSDate
NSString *str = @"2021-05-21 07:05:26 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 注意: 如果是从NSString格式化为NSDate, 那么dateFormat的格式, 必须和字符串中的时间格式一致, 否则可能转换失败
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
NSDate *date = [formatter dateFromString:str];
NSLog(@"%@", date);

已上就是在平常开发中用到的知识点,谢谢大家

posted @ 2022-07-30 17:01  一眼万年的星空  阅读(444)  评论(0编辑  收藏  举报