1、判断两个日期是否是同一天,不要求小时,分钟要一样
用法
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
BOOL datesAreEqual = [calendar isDate:firstDate equalToDate:secondDate toUnitGranularity:NSDayCalendarUnit];
NSCalendar+equalWithGranularity.h
#import <Foundation/Foundation.h> @interface NSCalendar (equalWithGranularity) - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity; @end
NSCalendar+equalWithGranularity.m
#import "NSCalendar+equalWithGranularity.h" @implementation NSCalendar (equalWithGranularity) - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 withGranularity:(NSCalendarUnit)granularity { if ([date1 isEqualToDate:date2]) { return YES; } int componentFlags = [self componentFlagsWithGranularity:granularity]; date1 = [self dateFromDate:date1 withComponentFlags:componentFlags]; date2 = [self dateFromDate:date2 withComponentFlags:componentFlags]; return [date1 isEqualToDate:date2]; } - (int)componentFlagsWithGranularity:(NSCalendarUnit)granularity { int componentFlags = 0; for (int i = 1<<1 ; i <= granularity ; i = i<<1) { componentFlags = componentFlags | i; } return componentFlags; } - (NSDate *)dateFromDate:(NSDate *)date withComponentFlags:(int)componentFlags { NSDateComponents *components = [self components:componentFlags fromDate:date]; return [self dateFromComponents:components]; } @end
2、时间若干操作
1 // 当前时间创建NSDate NSDate *myDate = [NSDate date]; NSLog(@"myDate = %@",myDate); 2 //从现在开始的24小时 NSTimeInterval secondsPerDay = 24*60*60; NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay]; NSLog(@"myDate = %@",tomorrow); 3//根据已有日期创建日期 NSTimeInterval secondsPerDay1 = 24*60*60; NSDate *now = [NSDate date]; NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1]; NSLog(@"yesterDay = %@",yesterDay); 4//比较日期 BOOL sameDate = [now isEqualToDate:yesterDay]; NSLog(@"sameDate = %lu",sameDate); 4.1//获取较早的日期 NSDate *earlierDate = [yesterDay earlierDate:now]; NSLog(@"earlierDate = %@",earlierDate); 4.2//较晚的日期 NSDate *laterDate = [yesterDay laterDate:now]; NSLog(@"laterDate = %@",laterDate); //两个日期之间相隔多少秒 NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now]; NSLog(@"secondsBetweenDates= %lf",secondsBetweenDates); //通过NSCALENDAR类来创建日期 NSDateComponents *comp = [[NSDateComponentsalloc]init]; [comp setMonth:06]; [comp setDay:01]; [comp setYear:2001]; NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *myDate1 = [myCal dateFromComponents:comp]; NSLog(@"myDate1 = %@",myDate1); //从已有日期获取日期 unsigned units = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit; NSDateComponents *comp1 = [myCal components:units fromDate:now]; NSInteger month = [comp1 month]; NSInteger year = [comp1 year]; NSInteger day = [comp1 day]; //NSDateFormatter实现日期的输出 NSDateFormatter *formatter = [[NSDateFormatteralloc]init]; [formatter setDateStyle:NSDateFormatterFullStyle];//直接输出的话是机器码 //或者是手动设置样式[formatter setDateFormat:@"yyyy-mm-dd"]; NSString *string = [formatter stringFromDate:now]; NSLog(@"string = %@",string); NSLog(@"formater = %@",formatter);
转自 http://www.cnblogs.com/xdream86/archive/2012/12/17/2821305.html,感谢原作者的整理收集