/**
* 获取当前年份,精确到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;
}