1.NSDate
⽆无论你是哪个时区的时间,打印时总是打印对应的0时区时间(即格林尼治时间)
// @interface NSDate : NSObject
NSDate *nowDate=[NSDate date];
NSLog(@"%@",nowDate);
2.. 本地timezZone 本地时区
// @interface NSTimeZone : NSObject
NSTimeZone *zone=[NSTimeZone localTimeZone];
NSLog(@"本地时区:%@",zone);
3.. 时间偏移量(秒为单位)
NSInteger time=[zone secondsFromGMT];
NSLog(@"时间间隔:%ld",time);
// 4.从现在(此刻的和格林尼治时间)到time秒之后的时间
NSDate *date1=[[NSDate alloc]initWithTimeIntervalSinceNow:time];
NSLog(@"date1=%@",date1);
// 从2001-01-01 00:00:00 +0000 之后0秒的时间
NSDate * date2= [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:0];
NSLog(@"date2=%@",date2);
// 1970-01-01 00:00:00 +0000之后0秒的时间
NSDate *date3=[[NSDate alloc]initWithTimeIntervalSince1970:0];
NSLog(@"date3=%@",date3);
5.时间戳NSTimeinterval
//typedef double NSTimeInterval; 本质double,用以秒为单位的时间间隔
// 从nowDate 都现在的时间(格林尼治时间)间隔。
NSTimeInterval interval1=[nowDate timeIntervalSinceNow];
NSLog(@" 从nowDate 都现在的时间(格林尼治时间)间隔%f",interval1);
// 从nowDate 到1970-01-01 00:00:00 +0000时间间隔
NSTimeInterval interval2=[nowDate timeIntervalSince1970];
NSLog(@"%f",interval2);
//时间戳应用
/// 1.可以使⽤用-initWithTimeIntervalSinceNow:⽅方法传⼊入⼀一个NSTimeInterval参数,创建⼀一个NSDate对象
// 24*60*60就是一个 NSTimeinterval
NSDate *tomorrowdate=[[NSDate alloc]initWithTimeIntervalSinceNow:24*60*60];
NSLog(@"明天此时:%@",tomorrowdate);
NSDate *yesterDay=[[NSDate alloc]initWithTimeIntervalSinceNow:-24*60*60];
NSLog(@"昨天此时:%@",yesterDay);
// 2.取两个时间对象的间隔
NSTimeInterval time1=[tomorrowdate timeIntervalSinceDate:yesterDay];
NSLog(@"时间间隔:%f",time1);
6**重点内容**.
NSDateFormatter 配合NSDate 与NSString之间的转换
NSDateFormatter有下面2个方法:
// 日期 date转换为 NSString类型
- (NSString )stringFromDate:(NSDate )date;
- //string转换为NSDate类型
- (NSDate )dateFromString:(NSString )string;
-
NSDate转换为NSString
// NSDateFormatter 日初始化
NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
// 设置日期格式
[formatter setDateFormat:@"yyyy-MM--dd hh:mm:ss "];
// 取一个日期 NSDate
NSDate *nowDate=[NSDate date];
// NSDate转换为NSString
NSString *stringTime=[formatter stringFromDate:nowDate];
NSLog(@"%@",stringTime);
NSString转换为NSDate
// 定义一个NSString 对象
NSString *dateString =@"1999-10-01";
// NSDateFormatter 初始化
NSDateFormatter *dateFomatter=[[NSDateFormatter alloc]init];
// 设置日期格式
[dateFomatter setDateFormat:@"yyyy-MM-dd"];
// NSString转换为NSDate
NSDate *date1=[dateFomatter dateFromString:dateString];
NSLog(@"%@",date1);
结论:
1.不论是NSString转化为NSDate还是NSDate转换为NSString,都需要初始化NSDateFormatter对象,并设置日期格式。要转换为什么就用什么接收。
2.转换时 NSString 必须与NSDate 格式对应
例如:
19990-10-01 对应:yyyy-MM-dd
对应格式: