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);