你的位置:首页 > 操作系统

[操作系统][oc学习日记]NSDate


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

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