美文网首页
计算日期的不常用算法

计算日期的不常用算法

作者: 马戏团小丑 | 来源:发表于2018-04-13 11:39 被阅读16次
  • 计算month个月后的最后一天
- (NSDate *)getEndDateWithMonth:(int)month{
    NSCalendar* cal=[NSCalendar currentCalendar];
    NSDateComponents *dateComponents = [cal components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];
    dateComponents.day =1;
    dateComponents.month +=month;
    NSDate * endDayOfNextMonth = [cal dateFromComponents:dateComponents];
    endDayOfNextMonth = [endDayOfNextMonth dateByAddingTimeInterval:-1];
    return endDayOfNextMonth;
}
  • 获取某个月的所有的date,如果是str=@"",计算的是今天到月底的date,str以yyyyMMdd传递
- (NSArray <NSDate *>*)getMonthBeginAndEnd:(NSString *)str{
    NSDate *nowDate;
    if (str.length == 0) {
        nowDate =[NSDate date];
    }else{
        nowDate = [ProcessingTime dateWithDateString:str andFormatString:@"yyyyMMdd"];
    }
    
    NSMutableArray *dateArr = [[NSMutableArray alloc]initWithObjects:nowDate, nil];
    
    double interval = 0;
    NSDate *beginDate = nil;
    NSDate *endDate = nil;
    NSCalendar *calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday:1];//设定周日为周首日
    BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:nowDate];
    //分别修改为 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit
    if (ok) {
        endDate = [beginDate dateByAddingTimeInterval:interval-1];
    }else {
        return nil;
    }
    
    long long nowTime = [[ProcessingTime timeStampWithDate:nowDate] longLongValue];
    long long endTime = [[ProcessingTime timeStampWithDate:endDate]longLongValue];

    long long dayTime = 24*60*60;
    long long time = nowTime + dayTime;
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyyMMdd"];
    while (time <= endTime) {
        NSString *timeString = [formatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:time]];
        [dateArr addObject:[formatter dateFromString:timeString]];
        time += dayTime;
    }
    return dateArr;
}
  • 获取今天是周几
- (NSString *)weekdayStringFromDate{
    NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期天", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
    [calendar setTimeZone: timeZone];
    NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
    NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:self.calendar.today];
    return [weekdays objectAtIndex:theComponents.weekday];
}

相关文章

  • 计算日期的不常用算法

    计算month个月后的最后一天 获取某个月的所有的date,如果是str=@"",计算的是今天到月底的date,s...

  • 五大常用算法

    引言 据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不...

  • 算法提高-日期计算

    给定一个时间计算它是星期几题目中给的是2011.11.11是星期五,后来我在网上看教程的时候,有提到2011.1....

  • EXCEL学习

    2017/3/29 常用日期与时间运算 1、日期与时间 2、推算日期 3、计算日期间隔 4、星期计算 2017/3...

  • 算法

    算法的定义 在数学和计算机科学/算学之中,算法/演算法/算则法(Algorithm)为一个计算的具体步骤,常用于计...

  • 第六课

    今天要讲的是最重要的是成本计算部分,分享三个常用的成本计算方法:(1)分步成本计算法(2)标准成本计算法(3)分批...

  • 典型相关分析(CCA)算法

    CCA算法 Canoical correlation analysis, CCA属于多元统计算法中的一种,常用来分...

  • 计算总借款天数(DAYS360函数)

    使用DAYS360函数可以按照一年360天的算法计算出两个日期间相差的天数。因此本例中根据借款日期、应还日期来计算...

  • 计算几何常用算法

    1. 矢量减法 设二维矢量 P = (x1,y1) ,Q = (x2,y2) 则矢量减法定义为: P - Q = ...

  • 推荐系统基础-常用相似度算法

    推荐系统中计算相似度常用的方法 欧几里得算法(欧几里得距离) 欧几里德算法又称辗转相除法,用于计算两个正整数a,b...

网友评论

      本文标题:计算日期的不常用算法

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