zoukankan      html  css  js  c++  java
  • iOS--时间类date详解

            NSDate定义时间的类

            

          NSDate是一个时间类,在编写程序时,我们很少遇到。今天我突然碰到,感觉很生疏。

          给大家发个博客,让大家也都温习一下,哈哈!

            兄弟用的时候突然发现竟然有一些bug,大家用时可以写验证了再用。

    1、定义:NSDate *date =[NSDate date];//当前时间对时间的加减

    2、对时间的操作                                                                                            

    NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:3600.0*10];//从当前时间开始,若干秒后的时间,参数代表秒                                                                                                                         

    NSDate *date2 = [date1 dateByAddingTimeInterval:60];//以某个时间为标准,加上若干秒后的时间     

    NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:1000];//从1970年开始,经过了若干秒的时间计算时间间隔

    3、计算时间间隔

    NSTimeInterval interval = [date timeIntervalSince1970];//从1970年到某一时间的秒数

    NSTimeInterval interval1 = [date1 timeIntervalSinceDate:date];//计算两个时间的间隔(秒)

    NSTimeInterval interval2 = [date1 timeIntervalSinceNow];//获取某一时间与当前时间的间隔

    NSLog(@"%lf",interval1);

    4、时间比较

    NSDate *date4 = [date laterDate:date1];//获取两个时间较晚的(距离1970年时间较长的)

    NSDate *date5 = [date earlierDate:date1];

    DateFormatter时间格式

    5、字符串与时间之间的相互转换

    NSDateFormatter *formater = [[NSDateFormatter alloc] init];

    [formater setDateFormat:@"yyyy-MM-dd h:mm:ss "];//设置时间显示的格式,此处使用的formater格式要与字符串格式完全一致,否则转换失败

    NSString *dateStr = [formater stringFromDate:date1];//将日期转换成字符串

    NSLog(@"%@",dateStr);

    NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];

    [formatter1 setDateFormat:@"yyyy年MM月dd日 hh:mm:ss"];//此处使用的formater格式要与字符串格式完全一致,否则转换失败

    [formatter1 setTimeZone:[NSTimeZone localTimeZone]];//将字符串转换成日期

    NSString *str = @"2015年11月11日 11:11:11";

    NSDate *date6 = [formatter1 dateFromString:str];

    NSLog(@"%@",date6);

     

    6、时区 

    NSTimeZone *zone = [NSTimeZone systemTimeZone];//获取系统时区

    [formater setTimeZone:zone];//设置时区       

    NSInteger timeOff = [zone secondsFromGMT];//获取系统时区的格林时差

    NSLog(@"%f",timeOff/3600.0);

    NSDate *date7=[formatter1 dateFromString:str];

    NSDate *date8 = [date7 dateByAddingTimeInterval:timeOff];

    NSLog(@"%@",date8);

    7、消除时间差

    NSString *str=@"2015年11月10日 11:11:11";

    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"yyyy年MM月dd日 hh:mm:ss"];

    NSDate *date=[formatter dateFromString:str];

    NSLog(@"%@",date);

    [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

    NSDate *date1=[formatter dateFromString:str];

    NSLog(@"%@",date1);

    [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    NSDate *date2=[formatter dateFromString:str];

    NSLog(@"%@",date2);

    NSInteger timeoff=[[NSTimeZone localTimeZone] secondsFromGMT];

    NSDate *date3=[date dateByAddingTimeInterval:timeoff];

    NSLog(@"%@",date3);

    8、与之相差的data

    NSDate *data=[[NSData alloc]init];

    NSString *str=@"1234";

    NSData *data1=[str dataUsingEncoding:NSUTF8StringEncoding];//将字符串转换成data,NSUTF8StringEncoding代表编码格式。

    NSString *str1=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//data转换为字符串

    NSLog(@"%@",data1);//输出data类型

    NSLog(@"%zi",data1.length);//输出data长度

    NSData *data2 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.iconpng.com/png/ios7-     premium/tree11.png"]];//获取网络数据

    NSLog(@"%@",data2);

    NSMutableData *data3 = [NSMutableData data];//创建一个空的数据

    [data3 appendData:data];//拼接data

    NSLog(@"%@",data3);

     

           

           

           

           

           

  • 相关阅读:
    Reverse Nodes in k-Group [LeetCode]
    Text Justification [LeetCode]
    Path Sum [LeetCode]
    Multiply Strings [LeetCode]
    Populating Next Right Pointers in Each Node II [Leetcode]
    013 集合
    012 元组
    02 isdecimal(), isdigit(), isnumeric()
    011 字符串的内置方法 三
    010 字符串的内置方法 二
  • 原文地址:https://www.cnblogs.com/zyz1341320997/p/4934201.html
Copyright © 2011-2022 走看看