开发中免不了跟日期打交道,今日整理下往日用到得日期计算和比较,总结一下
NSString与NSDate互相转换及NSDate比较
由 NSDate 转换为 NSString:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strDate = [dateFormatter stringFromDate:[NSDate date]];
由 NSString 转换为 NSDate:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2010-08-04 16:01:03"];
计算两个时间差得天数:
+(int)dayToday:(NSString *)first secondday:(NSString *)second{
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSDate *date1=[dateFormatter dateFromString:first];
NSDate *date2=[dateFormatter dateFromString:second];
NSTimeInterval time=[date2 timeIntervalSinceDate:date1];
int days=((int)time)/(3600*24);
return days;
计算某个日期距离现在还有多少年多少月多少日多少时多少分多少秒:
-(void)nowtoDay:(NSString *)day{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *endDateStr = day;
NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned int unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDate *nowDate = [NSDate date];
NSDate *endDate = [dateFormatter dateFromString:endDateStr];
NSDateComponents *comps = [calendar components:unitFlags fromDate:nowDate toDate:endDate options:0];
NSLog(@"%@",[NSString stringWithFormat:@"距离时间还有:%ld年%ld月%ld天%ld时%ld分%ld秒",comps.year,comps.month,comps.day,comps.hour,comps.minute,comps.second]);
}
计算日期加减天数得到新的日期:
-(void)newdayLater:(NSTimeInterval)time{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *nowDate = [NSDate date];
NSString * dateString = [dateFormatter stringFromDate:nowDate];//+nowDate为之后时间,-nowDate为之前时间
NSLog(@"%@",dateString);
NSDate * lastYear = [nowDate dateByAddingTimeInterval:time];
NSString * startDate = [dateFormatter stringFromDate:lastYear];
NSLog(@"%@",startDate);
}
比较日期大小
-(void)oneday:(NSString *)oneday CompareOneDay:(NSString*)otherDay{
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];
NSDate * firstday =[dateFormatter dateFromString:oneday];
NSDate * secday =[dateFormatter dateFromString:otherDay];
NSComparisonResult result = [firstday compare:secday];
if (result ==NSOrderedSame) {
NSLog(@"相同");
}
else if (result == NSOrderedAscending){
NSLog(@"小余");
}
else if (result == NSOrderedDescending){
NSLog(@"大于");
}
}