计算日期的不常用算法

2018-04-13  本文已影响16人  马戏团小丑
- (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;
}
- (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];
}
上一篇 下一篇

猜你喜欢

热点阅读