iOS日期相关常用方法

//根据日期返回当月的天数 (频繁调用 [NSCalendar currentCalendar] 可能存在性能问题)

- (NSUInteger)getDayCountWithDay:(NSDate *)date{
    return [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date].length;

}

//传入具体的年月日来获取星期

- (NSString *)getWeekWithYear:(NSInteger)year month:(NSInteger)month  day:(NSInteger)day{
    //根据日期获取
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:day];
    [comps setMonth:month];
    [comps setYear:year];
    
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *date = [gregorian dateFromComponents:comps];
    NSDateComponents *weekdayComponents = [gregorian components:NSCalendarUnitWeekday fromDate:date];
    NSInteger weekday = [weekdayComponents weekday];
    NSArray *array = [NSArray arrayWithObjects:@"星期日",@"星期一",@"星期二",@"星期三",@"星期四",@"星期五",@"星期六", nil];
    return array[weekday-1];
}

//距离一个时间点的某个时间长度的时间

    NSTimeInterval minute = 60*60;  //分钟
    NSTimeInterval hour = 60*60;    //小时
    NSTimeInterval day = 24*60*60;  ////距离现在某个时间
    [NSDate dateWithTimeIntervalSinceNow:<#(NSTimeInterval)#>];
    //距离一个相对日期的某个时间
    [NSDate dateWithTimeInterval:<#(NSTimeInterval)#> sinceDate:<#(nonnull NSDate *)#>];
    //距离1970年1月1日的某个时间
    [NSDate dateWithTimeIntervalSince1970:<#(NSTimeInterval)#>];
    //距离2001年1月1日的某个时间
    [NSDate dateWithTimeIntervalSinceReferenceDate:<#(NSTimeInterval)#>];

//根据参数获取返回的时间

- (NSInteger)getTime:(NSString *)time{
    NSDate *now = [NSDate date];
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday;
    NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];
    
    if ([time isEqualToString:@"year"]) {
        return [dateComponent year];
    } else if ([time isEqualToString:@"month"]){
        return [dateComponent month];
    }else if ([time isEqualToString:@"day"]){
        return [dateComponent day];
    }else if ([time isEqualToString:@"hour"]){
        return [dateComponent hour];
    }else if ([time isEqualToString:@"minute"]){
        return [dateComponent minute];
    }else if ([time isEqualToString:@"second"]){
        return [dateComponent second];
    }else if ([time isEqualToString:@"week"]){
        return [dateComponent weekday];
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/BlackCrown/p/5232071.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值