IOS比较两个日期的大小获取当前月份天数(今天、明天、后天)

原创 2015年07月23日 15:19:31

项目中有一个时间选择期,需要显示今天、明天、后天。对于需要跨月的情况要对日期本月天数进行判断。

/** 获取当前月份的最后一天 */
-(void)_getDateBtnValue
{
    NSInteger year = [[NSDate date] getYear]; //获取年份
    NSInteger month = [[NSDate date] getMonth];//获取月份
    NSInteger day = [[NSDate date] getDay];//获取日期
    
    //判断当前月分的天数
    int endDate = 0;
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            endDate = 31;
            break;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            endDate = 30;
            break;
        case 2:
            // 是否为闰年
            if (year % 400 == 0) {
                endDate = 29;
                break;
            } else {
                if (year % 100 != 0 && year %4 ==4) {
                    endDate = 29;
                } else {
                    endDate = 28;
                }
                break;
            }
            break;
        default:
            break;
    }
    
    NSDictionary *dic =  [self calculateDateWithEndDate:endDate withDay:day withMonth:month];
    dateDic = dic;
    //更新Button内容
    [self.todayBtn setTitle:[NSString stringWithFormat:@"今天(%@/%@)",dic[@"month"],dic[@"day"]] forState:UIControlStateNormal];
    [self.tomorrowBtn setTitle:[NSString stringWithFormat:@"明天(%@/%@)",dic[@"tomorrowMonth"],dic[@"tomorrow"]] forState:UIControlStateNormal];
    [self.afterDayBtn setTitle:[NSString stringWithFormat:@"后天(%@/%@)",dic[@"afterDayMonth"],dic[@"afterDay"]] forState:UIControlStateNormal];
}

/**
 *  判断当前今天明天后天在跨月的时候天数和月份数
 *  @parma endDate:当月最后一天
 *  @parma day:今天的日期
 *  @parma month:当前月份
 *  @parma weekday:当前是周几
 */

-(NSDictionary *)calculateDateWithEndDate:(int)endDate withDay:(NSInteger)day withMonth:(NSInteger)month
{
    NSInteger tomorrow = 0; //明天
    NSInteger afterDay = 0;  //后天
    NSInteger tomorrowMonth = 0;
    NSInteger afterDayMonth = 0;
    NSInteger currentYear = [[NSDate date] getYear];
    NSInteger nextYear = currentYear;
    NSInteger lastYear = nextYear;
    
    if(endDate - day <= 0)
    {
        tomorrow = 1;
        afterDay = tomorrow + 1;
        tomorrowMonth = month + 1;
        if(tomorrowMonth > 12)
        {
            tomorrowMonth = 1;
            nextYear=nextYear + 1;
            lastYear = nextYear;
        }
        afterDayMonth = tomorrowMonth;
    }
    
    else if(endDate - day == 1)
    {
        tomorrow = endDate;
        afterDay = 1;
        tomorrowMonth = month;
        afterDayMonth = month + 1;
        if(month == 12)
        {
            afterDayMonth = 1;
            lastYear = nextYear + 1;
        }
    }
    
    else
    {
        tomorrow = day+1;
        afterDay = tomorrow + 1;
        tomorrowMonth = month;
        afterDayMonth = month;
    }
    
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    [dic setObject:[NSNumber numberWithInteger:day] forKey:@"day"];
    [dic setObject:[NSNumber numberWithInteger:month] forKey:@"month"];
    [dic setObject:[NSNumber numberWithInteger:currentYear] forKey:@"year"];
    
    [dic setObject:[NSNumber numberWithInteger:tomorrow] forKey:@"tomorrow"];
    [dic setObject:[NSNumber numberWithInteger:tomorrowMonth] forKey:@"tomorrowMonth"];
    [dic setObject:[NSNumber numberWithInteger:nextYear] forKey:@"nextYear"];
    
    [dic setObject:[NSNumber numberWithInteger:afterDay] forKey:@"afterDay"];
    [dic setObject:[NSNumber numberWithInteger:lastYear] forKey:@"lastYear"];
    [dic setObject:[NSNumber numberWithInteger:afterDayMonth] forKey:@"afterDayMonth"];
    
    return dic;
    
}

/**
 *  判断两个时间的大小
 *  @parma selectDate:选择的日期
 *  @return 1:大于当前日期 -1:小于当前时间 0:等于当前时间
 */
-(int)compareDateWithSelectDate:(NSString *)selectDate
{
    NSDate *currentDate = [NSDate date];
    NSDateFormatter *fomatter = [[NSDateFormatter alloc] init];
    [fomatter setDateFormat:@"YYYY-MM-dd HH:mm"];
    NSString *curentDateStr = [fomatter stringFromDate:currentDate];
    currentDate = [fomatter dateFromString:curentDateStr];
    
    int result = [[fomatter dateFromString:selectDate] compare:currentDate];
    if(result == NSOrderedDescending)
    {
        return 1;
    }
    else if(result == NSOrderedAscending)
    {
        return -1;
    }
    return 0;
}

/** 获取今天是周几 **/
-(NSString *)_getWeakDay:(UIButton *)sender
{
    NSInteger weakday = [[NSDate date] weekday];//周末为第一天
    NSString *selectWeakDay = @"";
    NSInteger tmpWeakday = weakday;
    switch (sender.tag) {
        case 100://今天
        {
            tmpWeakday = weakday;
        }
            break;
        case 101://明天
        {
            tmpWeakday = weakday+1;
            if(tmpWeakday>7)
            {
                tmpWeakday = 1;
            }
        }
            break;
        case 102://后天
        {
            tmpWeakday = weakday + 2;
            if(tmpWeakday - 7 > 0)
            {
                (tmpWeakday == 8) ? (tmpWeakday = 1) : (tmpWeakday = 2);
            }
        }
            break;
        default:
            break;
    }
    
    switch (tmpWeakday) {
        case 1:
            selectWeakDay = @"星期天";
            break;
            
        case 2:
            selectWeakDay = @"星期一";
            break;
            
        case 3:
            selectWeakDay = @"星期二";
            break;
            
        case 4:
            selectWeakDay = @"星期三";
            break;
            
        case 5:
            selectWeakDay = @"星期四";
            break;
            
        case 6:
            selectWeakDay = @"星期五";
            break;
            
        case 7:
            selectWeakDay = @"星期六";
            break;
        default:
            break;
    }
    
    return selectWeakDay;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS获取当前时间及前一天或后一天时间

NSDate * date = [NSDate date];//当前时间 NSDate *lastDay = [NSDate dateWithTimeInterval:-24*60*60...
  • zwl492454828
  • zwl492454828
  • 2016年02月17日 13:21
  • 8398

iOS判断是两个日期是否大于1天

iOS判断是两个日期是否大于1天:把两个日期转化为时间戳,然后相减进行判断// 指定的时间 NSDate *date = [[NSUserDefaults standardUserDefaults] ...
  • csdn2314
  • csdn2314
  • 2017年08月10日 17:43
  • 426

iOS开发---判断两个日期的时间差2

_intervatTime = [endDate timeIntervalSinceDate: startDate];     int days = ((int)_intervatTime)...
  • sinat_28585351
  • sinat_28585351
  • 2016年03月16日 12:03
  • 1977

iOS日期的比较

1.日期可以进行比较以确定大小或相等,也可以确定两个日期之间的时间间隔。两个日期的间隔时间差可以使用-timeIntervalSinceDate:方法来计算    NSDate * now ...
  • sunnyboy9
  • sunnyboy9
  • 2015年11月17日 16:57
  • 6944

iOS 时间比较大小

转载:http://blog.csdn.net/sunnyboy9/article/details/49889923 /*******   设置两个时间差为固定值   *******/ ...
  • lurenjia_KB
  • lurenjia_KB
  • 2016年09月14日 16:27
  • 5298

iOS中比较当前日期与指定日期大小

1、首先获取当前日期NSDate形式,指定一个日期格式    #pragma mark -得到当前时间 - (NSDate *)getCurrentTime{ NSDateFormatter ...
  • oneTagTag
  • oneTagTag
  • 2016年08月18日 17:36
  • 10156

iOS编程中比较两个日期的大小

iOS编程中比较两个日期的大小   比较日期大小是任何编程语言都会经常遇到的问题,再iOS编程中,通常用NSDate对象来存储一个时间(包括日期和时间、时区),而且 NSDat...
  • YLGWHYH
  • YLGWHYH
  • 2016年08月20日 09:36
  • 747

ios 比较两个日期格式(NSString,NSDate)的大小/前后

方法已封装!日期格式请传入:2013-08-05 12:12:12;如果修改日期格式,比如:2013-08-05,则将[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]...
  • hong1595
  • hong1595
  • 2015年04月10日 09:54
  • 4915

iOS当前时间和后台返回时间做比较大小

#pragma mark -得到当前时间 - (NSDate *)CurrentTime{ NSDateFormatter *formatter=[[NSDateFormatter alloc...
  • w1035524412
  • w1035524412
  • 2017年06月14日 08:50
  • 695

[代码分享]判断日期是今天,昨天还是明天

-(NSString *)compareDate:(NSDate *)date{     NSTimeInterval secondsPerDay = 24 * 60 * 60;     ...
  • yangchen9931
  • yangchen9931
  • 2015年11月06日 11:32
  • 560
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS比较两个日期的大小获取当前月份天数(今天、明天、后天)
举报原因:
原因补充:

(最多只允许输入30个字)