Skip to content

Instantly share code, notes, and snippets.

@zhangwc
Created August 29, 2013 14:55
Show Gist options
  • Save zhangwc/6379165 to your computer and use it in GitHub Desktop.
Save zhangwc/6379165 to your computer and use it in GitHub Desktop.
@interface NSDate(Conversion)
+ (NSDate *)dateFromString:(NSString *)dateString dateFormat:(NSString *)format;
+ (NSString *)stringFromDate:(NSDate *)date dateFormat:(NSString *)format;
+ (NSInteger)timeBetweenFrom:(NSDate*)fromDateTime
to:(NSDate*)toDateTime
withUnit:(NSCalendarUnit)unit;
@end
@implementation NSDate(Conversion)
+ (NSInteger)timeBetweenFrom:(NSDate*)fromDateTime
to:(NSDate*)toDateTime
withUnit:(NSCalendarUnit)unit {
NSDate *fromDate;
NSDate *toDate;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar rangeOfUnit:unit startDate:&fromDate interval:NULL forDate:fromDateTime];
[calendar rangeOfUnit:unit startDate:&toDate interval:NULL forDate:toDateTime];
NSDateComponents *difference = [calendar components:unit fromDate:fromDate toDate:toDate options:0];
switch (unit) {
case NSYearCalendarUnit:
return [difference year];
case NSMonthCalendarUnit:
return [difference month];
case NSWeekCalendarUnit:
return [difference week];
case NSDayCalendarUnit:
return [difference day];
case NSHourCalendarUnit:
return [difference hour];
case NSMinuteCalendarUnit:
return [difference minute];
default:
NSAssert(NO, @"未定义");
return -1001;
break;
}
}
+ (NSDate *)dateFromString:(NSString *)dateString dateFormat:(NSString *)format {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: format];
NSDate *destDate= [dateFormatter dateFromString:dateString];
return destDate;
}
+ (NSString *)stringFromDate:(NSDate *)date dateFormat:(NSString *)format {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
NSString *destDateString = [dateFormatter stringFromDate:date];
return destDateString;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment