·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> [oc学习日记]NSDate

[oc学习日记]NSDate

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

首先介绍一下返回日期对象的方法

 1         //获取当前日期时间
 2         NSDate *now = [NSDate date];
 3         NSLog(@"%@",now);
 4         //返回自从1970年之后经过多少秒(可正可负)之后的日期时间
 5         NSDate *mydate1970 = [NSDate dateWithTimeIntervalSince1970:60*60];
 6         NSLog(@"%@",mydate1970);
 7         //返回自从当前时间经过多少秒(可正可负)之后的日期时间
 8         NSDate *mydatenow = [NSDate dateWithTimeIntervalSinceNow:-60*60];
 9         NSLog(@"%@",mydatenow);
10         //返回给定时间经过多少秒(可正可负)之后的日期时间
11         NSDate *mydatedate = [now dateByAddingTimeInterval:60*60];
12         NSLog(@"%@",mydatedate);
13         //获取两个时间之中比较早的那一个
14         NSDate *ear = [mydate1970 earlierDate:mydatenow];
15         NSLog(@"%@",ear);
16         //获取两个时间中比较晚的那一个
17         NSDate *last = [mydate1970 laterDate:mydatenow];
18         NSLog(@"%@",last);

接下来介绍一下返回秒数的方法

1         //返回当前时间自1970年之后经过的秒数
2         NSTimeInterval mytime1970 = [[NSDate date]timeIntervalSince1970];
3         NSLog(@"%f",mytime1970);
4         //返回给定时间距离现在经过的秒数
5         NSTimeInterval mytimenow = [mydate1970 timeIntervalSinceNow];
6         NSLog(@"%f",mytimenow);
7         //获取两个时间的时间差
8         NSTimeInterval timedis = [mydate1970 timeIntervalSinceDate:mydatenow];
9         NSLog(@"%f",timedis);

接下来讲述两个 重点用法

1.日期格式转化为字符串格式

字符串格式按照格式化对象的设置进行输出 yyyy为年  也可写为yy之输出后两位  MM只能是月 如果只写一个m会省去前面的0 如果月份是两位数系统会自动加上缺省的那位

a  为上下午  24小时制小时用H 12小时制用h

系统会自动给你转化时差

1         //日期时间格式化对象  格式化的同时将事件转化为当前时区的时间
2         NSDateFormatter *dateformatter = [NSDateFormatter new];
3         [dateformatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒 a vvvv"];
4         NSString *mystedate = [dateformatter stringFromDate:now];
5         NSLog(@"%@",mystedate);

2.字符串转化为日期格式

注意:转化出来的日期会有时差

1         //日期格式的字符串转化为日期对象  格式化的内容要与字符串内容一样
2         NSString *mystrdate = @"2012-12-12 10:12:59";
3         NSDateFormatter *dateformatter1 = [NSDateFormatter new];
4         [dateformatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
5         NSDate *mystrdd = [dateformatter1 dateFromString:mystrdate];
6         NSLog(@"%@",mystrdd);

 

 

 

接下来为大家介绍时区

首先是用的不太多只需了解的内容

1         //系统时区
2         NSTimeZone *syszone = [NSTimeZone systemTimeZone];
3         //本地时区
4         NSTimeZone *localzone = [NSTimeZone localTimeZone];
5         //默认时区
6         NSTimeZone *defaultzone = [NSTimeZone defaultTimeZone];
7         NSLog(@"%@",syszone);
8         NSLog(@"%@",[localzone abbreviation]);
9         NSLog(@"%@",[defaultzone abbreviation]);

查看系统中收录了的时区

1         //系统中所有时区的数组
2         NSArray *zonearr = [NSTimeZone knownTimeZoneNames];
3         NSLog(@"%@",zonearr);
4         //系统中所有时区的字典
5         NSDictionary *zonedic = [NSTimeZone abbreviationDictionary];
6         NSLog(@"%@",zonedic);

最后就是重中之重——————时差转换

1.格林尼治时区转化

1         //转换时差
2         NSString *strdate = @"2015年6月6日 8时8分56秒";
3         NSDateFormatter *formatter = [NSDateFormatter new];
4         [formatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
5         //设置时区
6         [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
7         NSDate *date = [formatter dateFromString:strdate];
8         NSLog(@"%@",date);

2.设置时区

1          //转换时差
2          NSString *strdate = @"2015年6月6日 8时8分56秒";
3          NSDateFormatter *formatter = [NSDateFormatter new];
4          [formatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
5          //两种方式都可以  最好用第一种 第二种有的时区会没有收录因而无法转换
6          [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
7          [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
8          NSDate *date = [formatter dateFromString:strdate];
9          NSLog(@"%@",date); 

3.格林尼治时间差转换

 1         //计算系统时区和格林尼治的时间差  得到的是秒数
 2         NSInteger timeoff = [syszone secondsFromGMT];
 3         NSLog(@"%zi",timeoff);
 4         //转换时差
 5         NSString *strdate = @"2015年6月6日 8时8分56秒";
 6         NSDateFormatter *formatter = [NSDateFormatter new];
 7         [formatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
 8         //在当前时间加上时差得到正确时间
 9         NSDate *firdate = [formatter dateFromString:strdate];
10         NSDate *date = [firdate dateByAddingTimeInterval:timeoff];
11         NSLog(@"%@",date);