美文网首页
关于NSDate的那些事儿

关于NSDate的那些事儿

作者: YJLJianShu | 来源:发表于2018-04-18 16:31 被阅读0次
    @interface ViewController ()  
    {  
        NSString *_dateString;//时间戳  
    }  
    @end 
    
        - (void)viewDidLoad {  
            [super viewDidLoad];  
            //1.获取到当前时区的当前时间  
            [self getCurrentDateOfLocalZone];  
              
            //2.获取当前时间戳  
            //时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数  
            [self getCurrentDateString];  
              
            //3.根据时间戳转换成对应的日期和时间  
            [self accordingDateStringTranslatedCurrentDate];  
              
        }  
    
    - (void)getCurrentDateOfLocalZone {  
        NSDate *date = [NSDate date];  
        //初始化时间显示格式  
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
        //给时间格式设置时区  
        NSTimeZone *zone = [NSTimeZone localTimeZone];  
        [dateFormatter setTimeZone:zone];  
          
        [dateFormatter setDateFormat:@"YYYY:MM:dd-HH:mm:ss"];  
        NSString *timeString = [dateFormatter stringFromDate:date];  
        NSLog(@"当前时间=%@",timeString);  
    }  
    
    - (void)getCurrentDateString {  
        //时区  
        //NSTimeZone *zone = [NSTimeZone localTimeZone];  
        //当前时区和格林威治时区的时间差  8小时  
        //NSTimeInterval timeInterval = [zone secondsFromGMTForDate:[NSDate date]];  
        //格林威治时间到现在的秒数  
        NSString *sumString = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970]];  
        //截取小数点前的数  
        NSString *dateString = [[sumString componentsSeparatedByString:@"."] objectAtIndex:0];  
        //获取到时间戳  
        _dateString = dateString;  
        NSLog(@"时间戳=%@",dateString);  
        NSLog(@"sumString=%@",sumString);  
    }  
    
    - (void)accordingDateStringTranslatedCurrentDate {  
        //把时间戳转化为日期  
        NSDate *date = [NSDate dateWithTimeIntervalSince1970:[_dateString intValue]];  
        //时间格式  
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
        //时区  
        NSTimeZone *zone = [NSTimeZone localTimeZone];  
        [dateFormatter setTimeZone:zone];  
        [dateFormatter setDateFormat:@"yyyy:MM:dd-HH:mm:ss"];  
        NSString *currentDate = [dateFormatter stringFromDate:date];  
        NSLog(@"根据时间戳转换为日期和时间=%@",currentDate);  
          
    }  
    

    NSDateFormatter的格式介绍

    G -- 纪元
    一般会显示公元前(BC)和公元(AD)

    y -- 年
    假如是2013年,那么yyyy=2013,yy=13

    M -- 月
    假如是3月,那么M=3,MM=03,MMM=Mar,MMMM=March
    假如是11月,那么M=11,MM=11,MMM=Nov,MMMM=November

    w -- 年包含的周
    假如是1月8日,那么w=2(这一年的第二个周)

    W -- 月份包含的周(与日历排列有关)
    假如是2013年4月21日,那么W=4(这个月的第四个周)

    F -- 月份包含的周(与日历排列无关)
    和上面的W不一样,F只是单纯以7天为一个单位来统计周,例如7号一定是第一个周,15号一定是第三个周,与日历排列无关。

    D -- 年包含的天数
    假如是1月20日,那么D=20(这一年的第20天)
    假如是2月25日,那么D=31+25=56(这一年的第56天)

    d -- 月份包含的天数
    假如是5号,那么d=5,dd=05
    假如是15号,那么d=15,dd=15

    E -- 星期
    假如是星期五,那么E=Fri,EEEE=Friday

    a -- 上午(AM)/下午(PM)

    H -- 24小时制,显示为0--23
    假如是午夜00:40,那么H=0:40,HH=00:40

    h -- 12小时制,显示为1--12
    假如是午夜00:40,那么h=12:40

    K -- 12小时制,显示为0--11
    假如是午夜00:40,那么K=0:40,KK=00:40

    k -- 24小时制,显示为1--24
    假如是午夜00:40,那么k=24:40

    m -- 分钟
    假如是5分钟,那么m=5,mm=05
    假如是45分钟,那么m=45,mm=45

    s -- 秒
    假如是5秒钟,那么s=5,ss=05
    假如是45秒钟,那么s=45,ss=45

    S -- 毫秒
    一般用SSS来显示

    z -- 时区
    表现形式为GMT+08:00

    Z -- 时区
    表现形式为+0800

    相关文章

      网友评论

          本文标题:关于NSDate的那些事儿

          本文链接:https://www.haomeiwen.com/subject/jztbkftx.html