获取时间


/**
 * 获取当前年份,精确到yyyy
 * 例如 返回2018年
 *
 * @return NSString
 */
+ (NSString *)getCurrentYear
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy"];
    
    return [dateFormatter stringFromDate:datenow];
}


/**
 * 获取某个年的上一年,精确到yyyy
 * 例如 lastYear=2018,返回2017
 *
 * @return NSString
 */
+ (NSString *)getLastYear:(NSString *)lastYear
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy"];
    
    NSDate *date = [dateFormatter dateFromString:lastYear];
    
    //上个年
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
    [lastMonthComps setYear:-1];
    
    NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:date options:0];
    
    NSString *currentTimeString = [dateFormatter stringFromDate:newdate];
    
    return currentTimeString;
}



/**
 * 获取当前年月,精确到yyyy-MM
 * 例如 返回2018-11
 */
+ (NSString *)getCurrentMonth
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM"];
    
    return [dateFormatter stringFromDate:datenow];
}


/**
 * 获取当前月,精确到dd
 * 例如 现在是2018-11-01 返回11
 *
 * @return NSString
 */
+ (NSString *)getNowMonth
{

    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    
    NSDate *dt = [NSDate date];
    
    unsigned unitFlags = NSCalendarUnitMonth;
    
    NSDateComponents *comp = [gregorian components: unitFlags
                                          fromDate:dt];
    
    NSString *datenow = [NSString stringWithFormat:@"%ld",comp.month];
    
    return datenow;
}


/**
 * 获取当前年月日,精确到yyyy-MM-dd
 * 例如 返回2018-11-01
 */
+ (NSString *)getCurrentDay
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    
    return [dateFormatter stringFromDate:datenow];
}


/**
 * 获取当前时间,精确到yyyy-MM-dd HH:mm:ss
 * 例如 返回2018-11-11 11:00:00
 */
+ (NSString *)getCurrentTime
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    
    return [dateFormatter stringFromDate:datenow];
}


/**
 * 获取当月的上一个月,yyyy-MM
 * 例如 当月=2018-11 ,返回2018-10
 */
+ (NSString *)getLastMonth
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM"];
    
    //上个月
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
    [lastMonthComps setMonth:-1];
    NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:datenow options:0];
    
    NSString *currentTimeString = [formatter stringFromDate:newdate];
    
    return currentTimeString;
}


/**
 * 获取上个年的当月,精确到yyyy-MM
 * 例如  str=2018-11  返回2017-11
 *
 * @return NSString
 */
+ (NSString *)getLastYearMonth:(NSString *)str;
{
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM"];
    
    NSDate *date = [formatter dateFromString:str];
    
    //上个月
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
    [lastMonthComps setYear:-1];
    NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:date options:0];
    
    NSString *currentTimeString = [formatter stringFromDate:newdate];
    
    return currentTimeString;
}


/**
 * 获取当年的上个月份的当日,精确到yyyy-MM-dd
 * 例如  现在=2018-11-01  返回2018-10-01
 */
+ (NSString *)getLastMonthDay
{
    NSDate *datenow = [NSDate date];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    
    //上个月
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
    [lastMonthComps setMonth:-1];
    NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:datenow options:0];
    
    NSString *currentTimeString = [formatter stringFromDate:newdate];
    
    return currentTimeString;
}

/**
 * 获取当月的下个月 ,yyyy-MM
 * 例如  现在=2018-11  返回2018-12
 */
+ (NSString *)getNextMonth:(NSString *)str
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM"];
    
    NSDate *date = [dateFormatter dateFromString:str];
    
    //下个月
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *nextMonthComps = [[NSDateComponents alloc] init];
    [nextMonthComps setMonth:1];
    
    NSDate *newdate = [calendar dateByAddingComponents:nextMonthComps toDate:date options:0];
    
    NSString *dateStr  = [dateFormatter stringFromDate:newdate];
    
    return dateStr;
}


/**
 * 计算当前日期的几天后
 * 例如  currentDay=2018-11-01  days=1 返回2018-11-02
 */
+ (NSString *)getCurrentDay:(NSString *)currentDay computeDateWithDays:(NSInteger)days
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    
    NSDate *myDate = [dateFormatter dateFromString:currentDay];
    
    NSDate *newDate = [myDate dateByAddingTimeInterval:24*60*60*days];
    
    return [dateFormatter stringFromDate:newDate];
}


/**
 * 计算当前日期的几天前
 * 例如  currentDay=2018-11-01  days=1 返回2018-10-31
 */
+ (NSString *)getCurrentDay:(NSString *)currentDay computeDateBeforeDays:(NSInteger)days
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    
    NSDate *myDate = [dateFormatter dateFromString:currentDay];
    
    NSDate *oldDate = [myDate dateByAddingTimeInterval:-24*60*60*days];
    
    return [dateFormatter stringFromDate:oldDate];
}


/**
 * 格式化时间,用于显示时间
 *
 * @return NSString
 */
+ (NSString *) compareCurrentTime:(NSString *)str
{
    if(str.length > 0)
   {
       //把字符串转为NSdate
       NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
       [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
       NSDate *timeDate = [dateFormatter dateFromString:str];
       
       //八小区时区
       NSTimeZone *zone = [NSTimeZone systemTimeZone];
       NSInteger interval = [zone secondsFromGMTForDate:timeDate];
       NSDate *mydate = [timeDate dateByAddingTimeInterval:interval];
       NSDate *nowData = [[NSDate date]dateByAddingTimeInterval:interval];
       
       //得到与当前时间差
       NSTimeInterval timeInterval = [mydate timeIntervalSinceDate:nowData];
       timeInterval = -timeInterval;
       
       long temp = 0;
       NSString *result;
       if (timeInterval < 60) //刚刚
       {
           result = [NSString stringWithFormat:@"刚刚"];
       }
       else if((temp = timeInterval/60) < 60) //分钟前
       {
           result = [NSString stringWithFormat:@"%ld分钟前",temp];
       }
       else if ((temp = timeInterval/
                 (60 * 60)) < 24) //小时前
       {
           result = [str substringFromIndex:11];
       }
       else if ((temp = timeInterval/
                 (24 * 60 * 60)) < 30) //天前
       {
           result = [str substringFromIndex:5];
       }
       else if (((temp = timeInterval/(24*60*60*30)))<12)//月前
       {
           result = [str substringFromIndex:5];
       }
       else
       {
           //temp = timeInterval/(24*60*60*30*12),年前
           result = str;
       }
       
       return result;
   }
    else
    {
        return str;
    }
    
}


/**
 * 比较时间大小
 * 例如 startDate=2018-11-01  endDate=2018-11-11 返回-1
 */
+ (int)compareOneDay:(NSString *)startDate withAnotherDay:(NSString *)endDate
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    
    NSDate *dt1 = [dateFormatter dateFromString:startDate];
    
    NSDate *dt2 = [dateFormatter dateFromString:endDate];
    
    NSComparisonResult result = [dt1 compare:dt2];
    
    //开始时间大于结束时间
    if (result == NSOrderedDescending)
    {
        return 1;
    }
    
    //开始时间小于结束时间
    else if (result == NSOrderedAscending)
    {
        return -1;
    }
    
    //相等
     return 0;
}


/**
 * 判断一个日期是否在一个时间段内
 * 例如 oneDate=2018-11-01  twoDate=2018-11-11  startTime=2018-10-01  endTime=2018-12-01 返回YES
 *
 */
+ (BOOL) validateWithOneDate:(NSString *)oneDate WithTwoDate:(NSString *)twoDate    withStartTime:(NSString *)startTime withEndTime:(NSString *)endTime
{
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd"];
    
    NSDate *date1 = [dateFormat dateFromString:oneDate];
    NSDate *date2 = [dateFormat dateFromString:twoDate];
    
    NSDate *start = [dateFormat dateFromString:startTime];
    NSDate *end = [dateFormat dateFromString:endTime];
    
    if ([date1 compare:start] == NSOrderedDescending  && [date2 compare:end] == NSOrderedAscending )
        
    {
        return YES;
    }
    return NO;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值