首页 > 技术文章 > iOS中的NSdate

wohaoxue 2015-08-12 11:07 原文

  @autoreleasepool {
       
        /*
        //创建NSDate 对象,创建的NSDate 对象是零时区的时间
        
        NSDate *currentDate = [NSDate date];
        NSLog(@"%@", currentDate);
       
        //dateWithTimeInterval是以秒计算的
       
        NSDate *BJDate1 = [NSDate dateWithTimeInterval:8 sinceDate:currentDate];
        NSLog(@"%@",BJDate1);
        //通过每一时间,获取另一时间
        //获取给定时间开始相隔多少秒之后的时间,该方法看似获取到的是北京时间,其实还是零时区时间,只不过是现在的零时区再过8小时之后的时间
      NSDate *BJDate = [NSDate dateWithTimeInterval:8*3600 sinceDate:currentDate];
        NSLog(@"%@",BJDate);
        
        //获取明日时间?
       NSDate *tomorrowDate = [NSDate dateWithTimeInterval:24*3600 sinceDate:BJDate];
        NSLog(@"%@",tomorrowDate);
      //获取昨天的时间
        NSDate *yesterdayDate = [NSDate dateWithTimeInterval:-24*3600 sinceDate:BJDate];
        NSLog(@"%@",yesterdayDate);
        
        //获取时间间隔
        
        
        //获取从1970年到现在的时间间隔
       NSTimeInterval timeInterval1970 = [BJDate timeIntervalSince1970];
        NSLog(@"%f", timeInterval1970);
        
        //获取从1970年开始,相差timeInterVal1970 这么长的时间之后的时间
        
        NSDate *timeSince1970 = [NSDate dateWithTimeIntervalSince1970:timeInterval1970];
        NSLog(@"%@",timeSince1970);
        
        //获取从2001年1月1日开始到到现在时间间隔
       NSTimeInterval temeSince2001 = [BJDate timeIntervalSinceReferenceDate];
        
        NSLog(@"%f",temeSince2001);

        
        //以当前时间为基准,计算某一个时间与当前时间间隔
        NSTimeInterval timeInterval1 = [tomorrowDate timeIntervalSinceNow];
        NSLog(@"%f",timeInterval1 / 3600);
        
        //以给定时间为基准,获取两个时间间隔
        NSTimeInterval timeIntreval2 = [yesterdayDate timeIntervalSinceDate:tomorrowDate];
        NSLog(@"%f",timeIntreval2 / 3600);
        
        
        
        //比较两个日期是否相等
        BOOL isEqual = [tomorrowDate isEqualToDate:yesterdayDate];
        NSLog(@"%d", isEqual);
        //获取两个时间中比较早的时间
        NSDate *earlyDate = [tomorrowDate earlierDate:yesterdayDate];
        NSLog(@"%@", earlyDate);
        
        //获取两个时间中比较晚的时间
        NSDate *laterDate = [tomorrowDate laterDate:yesterdayDate];
        NSLog(@"%@", laterDate);
        
        //两个日期对象比较
        NSComparisonResult result = [tomorrowDate compare: yesterdayDate];
        NSLog(@"%lu", result);

        
        */
        
        //日期转换处理
        
        //NSDate 和 NSString 之间的转换
//        //1.NSDate 转化成NSString
//        //1.创建NSDate 对象
         NSDate *currentDate = [NSDate date];
//        //2.创建日期转换工具
         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//        //3.设定日期转换格式
//        [formatter setDateFormat:@"yyyy年MM月dd日 E aHH:mm:ss"];
//        //4.通过日期转换工具,将NSDate的对象currentDate转换成字符串
//        NSString *timeStr =[formatter stringFromDate:currentDate];
//        NSLog(@"%@", timeStr);
//        
        /**
         *  日期格式
         yyyy:表示年
         M:表示月,只显示当前月的数字
         MM:表示月份,只显示月份数字,如果数字不足两位补零
         MMM:表示当前月份,即会输出当前月份,也会输入一个"月"字
         MMMM:表示月份,以中文形似显示当前月份,例如:八月
         
         d:表示当月的第几天
         D:表示当年的第几天
         
         E:表示周几
         a:表示上/下午
         
         hh:表示时间,12小时进制
         HH:表示时间,24小时进制
         
         mm:表示分钟
         
         ss:表示秒
         */
        //设置时区
     
        [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:2]];
        [formatter setDateFormat:@"yyyy年MM月dd日 E aHH:mm:ss"];
        
        NSString *timeStr =[formatter stringFromDate:currentDate];
        NSLog(@"%@", timeStr);
        
        [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];

        //3.设定日期转换格式
        [formatter setDateFormat:@"yyyy年MM月dd日 E aHH:mm:ss"];

        NSString *timeStr1 =[formatter stringFromDate:currentDate];
        NSLog(@"%@", timeStr1);

        //NSString 转 NSDate
        NSString *str = @"2015年8月20日 11点38分38秒";
        //创建格式转换器
        NSDateFormatter *frmatterStr = [[NSDateFormatter alloc] init];
        
        //设置转换格式,注意,格式必须跟字符串格式一致,否则转换失败
        [frmatterStr setDateFormat:@"yyyy年M月dd日 HH点mm分ss秒"];
        
        //转换
        NSDate *newDate = [frmatterStr dateFromString:str];
        NSLog(@"%@",newDate);
        
    }
    return 0;
}

 

推荐阅读