天天看点

iOS NSDate 时间计算

//联系人:石虎  QQ: 1224614774 昵称:嗡嘛呢叭咪哄

打印效果:

iOS NSDate 时间计算

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

    [super viewDidLoad];

    //当前时间

    [self currentTime];

    //当年共多少天

    [self yearTotalDays];

    //相差几天

    [self quiteFewDays];

}

- (void)currentTime

{

    //得到当前的时间

    NSDate * date = [NSDate date];

    //时间管理

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

    //时间格式

    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    //设置时间间隔(秒)(这个我是计算出来的,不知道有没有简便的方法 )

    NSTimeInterval time = 365 * 24 * 60 * 60;//一年的秒数

    //得到一年之前的当前时间(-:表示向前的时间间隔(即去年),如果没有,则表示向后的时间间隔(即明年))

    NSDate * lastYear = [date dateByAddingTimeInterval:-time];

    //转化为字符串

    NSString * startDate = [dateFormatter stringFromDate:lastYear];

    NSString *dayYY = [NSString stringWithFormat:@"%@",startDate];

    NSLog(@"dayYY---> %@",dayYY);

}

- (void)yearTotalDays

{

    //2.当年共多少天

    NSCalendar *calender = [NSCalendar currentCalendar];

    //计算时间

    NSDateComponents *comps =[calender components:(NSYearCalendarUnit | NSMonthCalendarUnit |NSDayCalendarUnit | NSWeekCalendarUnit)fromDate:[NSDate date]];

    int count = 0;

    for (int i=1; i<=12; i++) {

        [comps setMonth:i];

        NSRange range = [calender rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate: [calender dateFromComponents:comps]];

        count += range.length;

    }

    NSLog(@"count--->%d", count);

}

- (void)quiteFewDays

{

    //3.当时时间距离未来(过去)的天数

    NSString * time = @"2017-06-07";  //可以写过去时间差

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

    [dateFormatter setDateFormat:@"yyyy-MM-dd"];

    //根据需求 选择date的方法

    NSDate * date = [dateFormatter dateFromString:time];//x现在到未来的时间差

    //NSDate * date = [time dateFromString:dateFormatter];//现在和以前的时间差天数

    NSDate * currentDate = [NSDate date];

    NSUInteger sec = [date timeIntervalSinceDate:currentDate];

    NSLog(@"sec---->%zd",sec/(3600*24));

}