From 3e76349dbc64869a9d6b6a07dd96da2574e7d24d Mon Sep 17 00:00:00 2001 From: Casey Borders Date: Fri, 10 Apr 2015 15:43:55 -0400 Subject: [PATCH 1/7] Add NSDate category --- Classes/NSDate+ObjectiveSugar.h | 50 ++++++ Classes/NSDate+ObjectiveSugar.m | 299 ++++++++++++++++++++++++++++++++ Classes/ObjectiveSugar.h | 1 + 3 files changed, 350 insertions(+) create mode 100755 Classes/NSDate+ObjectiveSugar.h create mode 100755 Classes/NSDate+ObjectiveSugar.m diff --git a/Classes/NSDate+ObjectiveSugar.h b/Classes/NSDate+ObjectiveSugar.h new file mode 100755 index 0000000..e4b597f --- /dev/null +++ b/Classes/NSDate+ObjectiveSugar.h @@ -0,0 +1,50 @@ +@interface NSDate (ObjectiveSugar) + +- (NSInteger)year; +- (NSInteger)month; +- (NSInteger)day; +- (NSInteger)hours; +- (NSInteger)minutes; +- (NSInteger)seconds; +- (NSInteger)weekOfYear; +- (NSInteger)weekOfMonth; +- (NSInteger)dayOfYear; +- (NSInteger)dayOfWeek; +- (NSDateComponents *)components; + +- (BOOL)isAfter:(NSDate *)date; +- (BOOL)isBefore:(NSDate *)date; +- (BOOL)isOnOrAfter:(NSDate *)date; +- (BOOL)isOnOrBefore:(NSDate *)date; +- (BOOL)isInSameYear:(NSDate *)date; +- (BOOL)isInSameMonth:(NSDate *)date; +- (BOOL)isInSameWeek:(NSDate *)date; +- (BOOL)isOnSameDay:(NSDate *)date; +- (BOOL)isInSameHour:(NSDate *)date; +- (BOOL)isBetween:(NSDate *)date1 and:(NSDate *)date2; + +- (BOOL)isAtLeast:(NSNumber *)time from:(NSDate *)date; +- (BOOL)isMoreThan:(NSNumber *)time from:(NSDate *)date; +- (BOOL)isLessThan:(NSNumber *)time from:(NSDate *)date; + +- (BOOL)isAtLeast:(NSNumber *)time before:(NSDate *)date; +- (BOOL)isMoreThan:(NSNumber *)time before:(NSDate *)date; +- (BOOL)isLessThan:(NSNumber *)time before:(NSDate *)date; + +- (BOOL)isAtLeast:(NSNumber *)time after:(NSDate *)date; +- (BOOL)isMoreThan:(NSNumber *)time after:(NSDate *)date; +- (BOOL)isLessThan:(NSNumber *)time after:(NSDate *)date; + +- (NSInteger)yearsUntil:(NSDate *)date; +- (NSInteger)monthsUntil:(NSDate *)date; +- (NSInteger)daysUntil:(NSDate *)date; +- (NSInteger)hoursUntil:(NSDate *)date; +- (NSInteger)secondsUntil:(NSDate *)date; + +- (NSInteger)yearsSince:(NSDate *)date; +- (NSInteger)monthsSince:(NSDate *)date; +- (NSInteger)daysSince:(NSDate *)date; +- (NSInteger)hoursSince:(NSDate *)date; +- (NSInteger)secondsSince:(NSDate *)date; + +@end diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m new file mode 100755 index 0000000..5df8ec2 --- /dev/null +++ b/Classes/NSDate+ObjectiveSugar.m @@ -0,0 +1,299 @@ +#import "NSDate+ObjectiveSugar.h" +#import "NSNumber+ObjectiveSugar.h" + +@implementation NSDate (ObjectiveSugar) + +- (NSInteger)year +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self]; + NSInteger year = [components year]; + return year; +} + +- (NSInteger)month +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self]; + NSInteger month = [components month]; + return month; +} + +- (NSInteger)day +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self]; + NSInteger day = [components day]; + return day; +} + +- (NSInteger)hours +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:self]; + NSInteger hours = [components hour]; + return hours; +} + +- (NSInteger)minutes +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSMinuteCalendarUnit fromDate:self]; + NSInteger minutes = [components minute]; + return minutes; +} + +- (NSInteger)seconds +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:self]; + NSInteger seconds = [components second]; + return seconds; +} + +- (NSInteger)weekOfYear +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSWeekOfYearCalendarUnit fromDate:self]; + NSInteger weekOfYear = [components weekOfYear]; + return weekOfYear; +} + +- (NSInteger)weekOfMonth +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSWeekOfMonthCalendarUnit fromDate:self]; + NSInteger weekOfMonth = [components weekOfMonth]; + return weekOfMonth; +} + +- (NSInteger)dayOfYear +{ + NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; + NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:self]; + return dayOfYear; +} + +- (NSInteger)dayOfWeek +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit fromDate:self]; + NSInteger dayOfWeek = [components weekday]; + return dayOfWeek; +} + +- (NSDateComponents *)components +{ + NSCalendarUnit units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekday | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; + + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:units fromDate:self]; + return components; +} + +- (BOOL)isAfter:(NSDate *)date +{ + BOOL isAfter = [self compare:date] == NSOrderedDescending; + return isAfter; +} + +- (BOOL)isBefore:(NSDate *)date +{ + BOOL isBefore = [self compare:date] == NSOrderedAscending; + return isBefore; +} + +- (BOOL)isOnOrAfter:(NSDate *)date +{ + BOOL isOnOrAfter = [self compare:date] == NSOrderedDescending || [date compare:self] == NSOrderedSame; + return isOnOrAfter; +} + +- (BOOL)isOnOrBefore:(NSDate *)date +{ + BOOL isOnOrBefore = [self compare:date] == NSOrderedAscending || [self compare:date] == NSOrderedSame; + return isOnOrBefore; +} + +- (BOOL)isInSameYear:(NSDate *)date +{ + BOOL sameYear = [self year] == [date year]; + return sameYear; +} + +- (BOOL)isInSameMonth:(NSDate *)date +{ + BOOL sameMonth = [self isInSameYear:date] && + [self month] == [date month]; + return sameMonth; +} + +- (BOOL)isInSameWeek:(NSDate *)date +{ + BOOL sameWeek = [self isInSameMonth:date] && + [self weekOfMonth] == [date weekOfMonth]; + return sameWeek; +} + +- (BOOL)isOnSameDay:(NSDate *)date +{ + BOOL sameDay = [self isInSameMonth:date] && + [self day] == [date day]; + return sameDay; +} + +- (BOOL)isInSameHour:(NSDate *)date +{ + BOOL sameHour = [self isOnSameDay:date] && + [self hours] == [date hours]; + return sameHour; +} + +- (BOOL)isBetween:(NSDate *)date1 and:(NSDate *)date2 +{ + BOOL isBetweenDates = ([self isOnOrAfter:date1] && [self isOnOrBefore:date2]) || + ([self isOnOrAfter:date2] && [self isOnOrBefore:date1]); + + return isBetweenDates; +} + +- (BOOL)isAtLeast:(NSNumber *)time from:(NSDate *)date +{ + BOOL atLeast = [self isOnOrBefore:[time until:date]] && + [self isOnOrAfter:[time since:date]]; + return atLeast; +} + +- (BOOL)isMoreThan:(NSNumber *)time from:(NSDate *)date +{ + BOOL moreThan = [self isBefore:[time until:date]] && + [self isAfter:[time since:date]]; + return moreThan; +} + +- (BOOL)isLessThan:(NSNumber *)time from:(NSDate *)date +{ + BOOL lessThan = [self isOnOrAfter:[time until:date]] && + [self isOnOrBefore:[time since:date]]; + return lessThan; +} + +- (BOOL)isAtLeast:(NSNumber *)time before:(NSDate *)date +{ + BOOL before = [self isOnOrBefore:[time until:date]]; + return before; +} + +- (BOOL)isMoreThan:(NSNumber *)time before:(NSDate *)date +{ + BOOL before = [self isBefore:[time until:date]]; + return before; +} + +- (BOOL)isLessThan:(NSNumber *)time before:(NSDate *)date +{ + BOOL after = [self isAfter:[time until:date]] && + ![self isAfter:date]; + return after; +} + +- (BOOL)isAtLeast:(NSNumber *)time after:(NSDate *)date +{ + BOOL after = [self isOnOrAfter:[time since:date]]; + return after; +} + +- (BOOL)isMoreThan:(NSNumber *)time after:(NSDate *)date +{ + BOOL after = [self isAfter:[time since:date]]; + return after; +} + +- (BOOL)isLessThan:(NSNumber *)time after:(NSDate *)date +{ + BOOL before = [self isBefore:[time since:date]] && + ![self isBefore:date]; + return before; +} + +- (NSInteger)yearsUntil:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self toDate:date options:0]; + NSInteger years = [components year]; + return years; +} + +- (NSInteger)monthsUntil:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self toDate:date options:0]; + NSInteger months = [components month]; + return months; +} + +- (NSInteger)daysUntil:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self toDate:date options:0]; + NSInteger days = [components day]; + return days; +} + +- (NSInteger)hoursUntil:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:self toDate:date options:0]; + NSInteger hours = [components hour]; + return hours; +} + +- (NSInteger)secondsUntil:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:self toDate:date options:0]; + NSInteger seconds = [components second]; + return seconds; +} + +- (NSInteger)yearsSince:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:date toDate:self options:0]; + NSInteger years = [components year]; + return years; +} + +- (NSInteger)monthsSince:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:date toDate:self options:0]; + NSInteger months = [components month]; + return months; +} + +- (NSInteger)daysSince:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:date toDate:self options:0]; + NSInteger days = [components day]; + return days; +} + +- (NSInteger)hoursSince:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:date toDate:self options:0]; + NSInteger hours = [components hour]; + return hours; +} + +- (NSInteger)secondsSince:(NSDate *)date +{ + NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:date toDate:self options:0]; + NSInteger seconds = [components second]; + return seconds; +} + +@end diff --git a/Classes/ObjectiveSugar.h b/Classes/ObjectiveSugar.h index e5bc2a6..0c59185 100644 --- a/Classes/ObjectiveSugar.h +++ b/Classes/ObjectiveSugar.h @@ -9,3 +9,4 @@ #import "NSDictionary+ObjectiveSugar.h" #import "NSSet+ObjectiveSugar.h" #import "NSString+ObjectiveSugar.h" +#import "NSDate+ObjectiveSugar.h" \ No newline at end of file From c27e5b14ba82e5890549cd4f238d3891293c7872 Mon Sep 17 00:00:00 2001 From: Casey Borders Date: Mon, 13 Apr 2015 11:34:00 -0400 Subject: [PATCH 2/7] Cleanup --- Classes/NSDate+ObjectiveSugar.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Classes/NSDate+ObjectiveSugar.h b/Classes/NSDate+ObjectiveSugar.h index e4b597f..581a761 100755 --- a/Classes/NSDate+ObjectiveSugar.h +++ b/Classes/NSDate+ObjectiveSugar.h @@ -21,6 +21,7 @@ - (BOOL)isInSameWeek:(NSDate *)date; - (BOOL)isOnSameDay:(NSDate *)date; - (BOOL)isInSameHour:(NSDate *)date; + - (BOOL)isBetween:(NSDate *)date1 and:(NSDate *)date2; - (BOOL)isAtLeast:(NSNumber *)time from:(NSDate *)date; From 5d2736874388e6263aa9c5f37c2a4d429393943a Mon Sep 17 00:00:00 2001 From: Casey Borders Date: Mon, 13 Apr 2015 11:36:03 -0400 Subject: [PATCH 3/7] Add attribution comments --- Classes/NSDate+ObjectiveSugar.h | 9 +++++++++ Classes/NSDate+ObjectiveSugar.m | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/Classes/NSDate+ObjectiveSugar.h b/Classes/NSDate+ObjectiveSugar.h index 581a761..6b5de38 100755 --- a/Classes/NSDate+ObjectiveSugar.h +++ b/Classes/NSDate+ObjectiveSugar.h @@ -1,3 +1,12 @@ +// +// NSDate+ObjectiveSugar.h +// Objective Sugar +// +// Created by Casey Borders on 4/9/15. +// + +// For an overview see http://cocoadocs.org/docsets/ObjectiveSugar/ + @interface NSDate (ObjectiveSugar) - (NSInteger)year; diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m index 5df8ec2..3aa8772 100755 --- a/Classes/NSDate+ObjectiveSugar.m +++ b/Classes/NSDate+ObjectiveSugar.m @@ -1,3 +1,10 @@ +// +// NSDate+ObjectiveSugar.h +// Objective Sugar +// +// Created by Casey Borders on 4/9/15. +// + #import "NSDate+ObjectiveSugar.h" #import "NSNumber+ObjectiveSugar.h" From 66ea38ea5837861b2e6b873eb212bf28aa0db0e2 Mon Sep 17 00:00:00 2001 From: Casey Borders Date: Mon, 11 May 2015 11:21:23 -0400 Subject: [PATCH 4/7] Fix deprecated date components --- Classes/NSDate+ObjectiveSugar.m | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m index 3aa8772..ab9d6f1 100755 --- a/Classes/NSDate+ObjectiveSugar.m +++ b/Classes/NSDate+ObjectiveSugar.m @@ -13,7 +13,7 @@ @implementation NSDate (ObjectiveSugar) - (NSInteger)year { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitYear fromDate:self]; NSInteger year = [components year]; return year; } @@ -21,7 +21,7 @@ - (NSInteger)year - (NSInteger)month { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitMonth fromDate:self]; NSInteger month = [components month]; return month; } @@ -29,7 +29,7 @@ - (NSInteger)month - (NSInteger)day { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitDay fromDate:self]; NSInteger day = [components day]; return day; } @@ -37,7 +37,7 @@ - (NSInteger)day - (NSInteger)hours { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitHour fromDate:self]; NSInteger hours = [components hour]; return hours; } @@ -45,7 +45,7 @@ - (NSInteger)hours - (NSInteger)minutes { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSMinuteCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitMinute fromDate:self]; NSInteger minutes = [components minute]; return minutes; } @@ -53,7 +53,7 @@ - (NSInteger)minutes - (NSInteger)seconds { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitSecond fromDate:self]; NSInteger seconds = [components second]; return seconds; } @@ -61,7 +61,7 @@ - (NSInteger)seconds - (NSInteger)weekOfYear { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSWeekOfYearCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitWeekOfYear fromDate:self]; NSInteger weekOfYear = [components weekOfYear]; return weekOfYear; } @@ -69,7 +69,7 @@ - (NSInteger)weekOfYear - (NSInteger)weekOfMonth { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSWeekOfMonthCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitWeekOfMonth fromDate:self]; NSInteger weekOfMonth = [components weekOfMonth]; return weekOfMonth; } @@ -84,14 +84,14 @@ - (NSInteger)dayOfYear - (NSInteger)dayOfWeek { NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit fromDate:self]; + NSDateComponents *components = [gregorian components:NSCalendarUnitWeekday fromDate:self]; NSInteger dayOfWeek = [components weekday]; return dayOfWeek; } - (NSDateComponents *)components { - NSCalendarUnit units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekday | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; + NSCalendarUnit units = NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitQuarter | NSCalendarUnitWeekOfMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitYearForWeekOfYear | NSCalendarUnitNanosecond | NSCalendarUnitCalendar | NSCalendarUnitTimeZone; NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [gregorian components:units fromDate:self]; From 539d94ac8f77f18892ba648e1914c2d17da67509 Mon Sep 17 00:00:00 2001 From: Casey Borders Date: Mon, 11 May 2015 13:58:42 -0400 Subject: [PATCH 5/7] Fix logic --- Classes/NSDate+ObjectiveSugar.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m index ab9d6f1..fb81268 100755 --- a/Classes/NSDate+ObjectiveSugar.m +++ b/Classes/NSDate+ObjectiveSugar.m @@ -166,14 +166,14 @@ - (BOOL)isBetween:(NSDate *)date1 and:(NSDate *)date2 - (BOOL)isAtLeast:(NSNumber *)time from:(NSDate *)date { - BOOL atLeast = [self isOnOrBefore:[time until:date]] && + BOOL atLeast = [self isOnOrBefore:[time until:date]] || [self isOnOrAfter:[time since:date]]; return atLeast; } - (BOOL)isMoreThan:(NSNumber *)time from:(NSDate *)date { - BOOL moreThan = [self isBefore:[time until:date]] && + BOOL moreThan = [self isBefore:[time until:date]] || [self isAfter:[time since:date]]; return moreThan; } From b1ecb51c77aff5396b624d28b2616a1e76cfe235 Mon Sep 17 00:00:00 2001 From: Aaron Williams Date: Thu, 14 May 2015 16:25:48 -0400 Subject: [PATCH 6/7] updated Dates for UTC --- Classes/NSDate+ObjectiveSugar.m | 50 ++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m index fb81268..65b6434 100755 --- a/Classes/NSDate+ObjectiveSugar.m +++ b/Classes/NSDate+ObjectiveSugar.m @@ -8,11 +8,12 @@ #import "NSDate+ObjectiveSugar.h" #import "NSNumber+ObjectiveSugar.h" + @implementation NSDate (ObjectiveSugar) - (NSInteger)year { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitYear fromDate:self]; NSInteger year = [components year]; return year; @@ -20,7 +21,7 @@ - (NSInteger)year - (NSInteger)month { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitMonth fromDate:self]; NSInteger month = [components month]; return month; @@ -28,7 +29,8 @@ - (NSInteger)month - (NSInteger)day { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; + gregorian.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; NSDateComponents *components = [gregorian components:NSCalendarUnitDay fromDate:self]; NSInteger day = [components day]; return day; @@ -36,7 +38,7 @@ - (NSInteger)day - (NSInteger)hours { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitHour fromDate:self]; NSInteger hours = [components hour]; return hours; @@ -44,7 +46,7 @@ - (NSInteger)hours - (NSInteger)minutes { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitMinute fromDate:self]; NSInteger minutes = [components minute]; return minutes; @@ -52,7 +54,7 @@ - (NSInteger)minutes - (NSInteger)seconds { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitSecond fromDate:self]; NSInteger seconds = [components second]; return seconds; @@ -60,7 +62,7 @@ - (NSInteger)seconds - (NSInteger)weekOfYear { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitWeekOfYear fromDate:self]; NSInteger weekOfYear = [components weekOfYear]; return weekOfYear; @@ -68,7 +70,7 @@ - (NSInteger)weekOfYear - (NSInteger)weekOfMonth { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitWeekOfMonth fromDate:self]; NSInteger weekOfMonth = [components weekOfMonth]; return weekOfMonth; @@ -83,7 +85,7 @@ - (NSInteger)dayOfYear - (NSInteger)dayOfWeek { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSCalendarUnitWeekday fromDate:self]; NSInteger dayOfWeek = [components weekday]; return dayOfWeek; @@ -93,7 +95,7 @@ - (NSDateComponents *)components { NSCalendarUnit units = NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday | NSCalendarUnitWeekdayOrdinal | NSCalendarUnitQuarter | NSCalendarUnitWeekOfMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitYearForWeekOfYear | NSCalendarUnitNanosecond | NSCalendarUnitCalendar | NSCalendarUnitTimeZone; - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:units fromDate:self]; return components; } @@ -225,7 +227,7 @@ - (BOOL)isLessThan:(NSNumber *)time after:(NSDate *)date - (NSInteger)yearsUntil:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self toDate:date options:0]; NSInteger years = [components year]; return years; @@ -233,7 +235,7 @@ - (NSInteger)yearsUntil:(NSDate *)date - (NSInteger)monthsUntil:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self toDate:date options:0]; NSInteger months = [components month]; return months; @@ -241,7 +243,7 @@ - (NSInteger)monthsUntil:(NSDate *)date - (NSInteger)daysUntil:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self toDate:date options:0]; NSInteger days = [components day]; return days; @@ -249,7 +251,7 @@ - (NSInteger)daysUntil:(NSDate *)date - (NSInteger)hoursUntil:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:self toDate:date options:0]; NSInteger hours = [components hour]; return hours; @@ -257,7 +259,7 @@ - (NSInteger)hoursUntil:(NSDate *)date - (NSInteger)secondsUntil:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:self toDate:date options:0]; NSInteger seconds = [components second]; return seconds; @@ -265,7 +267,7 @@ - (NSInteger)secondsUntil:(NSDate *)date - (NSInteger)yearsSince:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:date toDate:self options:0]; NSInteger years = [components year]; return years; @@ -273,7 +275,7 @@ - (NSInteger)yearsSince:(NSDate *)date - (NSInteger)monthsSince:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:date toDate:self options:0]; NSInteger months = [components month]; return months; @@ -281,7 +283,7 @@ - (NSInteger)monthsSince:(NSDate *)date - (NSInteger)daysSince:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:date toDate:self options:0]; NSInteger days = [components day]; return days; @@ -289,7 +291,7 @@ - (NSInteger)daysSince:(NSDate *)date - (NSInteger)hoursSince:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:date toDate:self options:0]; NSInteger hours = [components hour]; return hours; @@ -297,10 +299,18 @@ - (NSInteger)hoursSince:(NSDate *)date - (NSInteger)secondsSince:(NSDate *)date { - NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; + NSCalendar *gregorian = [self gregorianUTCCalendar]; NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:date toDate:self options:0]; NSInteger seconds = [components second]; return seconds; } +- (NSCalendar *)gregorianUTCCalendar +{ + NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + gregorian.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + + return gregorian; +} + @end From d0c0adbcf0c23015b2316d7e72af35ff99a2ae81 Mon Sep 17 00:00:00 2001 From: Adam Bailey Date: Fri, 22 Jan 2016 10:26:15 -0500 Subject: [PATCH 7/7] remove warnings --- Classes/NSDate+ObjectiveSugar.m | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Classes/NSDate+ObjectiveSugar.m b/Classes/NSDate+ObjectiveSugar.m index 65b6434..3d51a7f 100755 --- a/Classes/NSDate+ObjectiveSugar.m +++ b/Classes/NSDate+ObjectiveSugar.m @@ -78,8 +78,8 @@ - (NSInteger)weekOfMonth - (NSInteger)dayOfYear { - NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; - NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:self]; + NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitYear forDate:self]; return dayOfYear; } @@ -228,7 +228,7 @@ - (BOOL)isLessThan:(NSNumber *)time after:(NSDate *)date - (NSInteger)yearsUntil:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:self toDate:date options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitYear fromDate:self toDate:date options:0]; NSInteger years = [components year]; return years; } @@ -236,7 +236,7 @@ - (NSInteger)yearsUntil:(NSDate *)date - (NSInteger)monthsUntil:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:self toDate:date options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitMonth fromDate:self toDate:date options:0]; NSInteger months = [components month]; return months; } @@ -244,7 +244,7 @@ - (NSInteger)monthsUntil:(NSDate *)date - (NSInteger)daysUntil:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:self toDate:date options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitDay fromDate:self toDate:date options:0]; NSInteger days = [components day]; return days; } @@ -252,7 +252,7 @@ - (NSInteger)daysUntil:(NSDate *)date - (NSInteger)hoursUntil:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:self toDate:date options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitHour fromDate:self toDate:date options:0]; NSInteger hours = [components hour]; return hours; } @@ -260,7 +260,7 @@ - (NSInteger)hoursUntil:(NSDate *)date - (NSInteger)secondsUntil:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:self toDate:date options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitSecond fromDate:self toDate:date options:0]; NSInteger seconds = [components second]; return seconds; } @@ -268,7 +268,7 @@ - (NSInteger)secondsUntil:(NSDate *)date - (NSInteger)yearsSince:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSYearCalendarUnit fromDate:date toDate:self options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitYear fromDate:date toDate:self options:0]; NSInteger years = [components year]; return years; } @@ -276,7 +276,7 @@ - (NSInteger)yearsSince:(NSDate *)date - (NSInteger)monthsSince:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSMonthCalendarUnit fromDate:date toDate:self options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitMonth fromDate:date toDate:self options:0]; NSInteger months = [components month]; return months; } @@ -284,7 +284,7 @@ - (NSInteger)monthsSince:(NSDate *)date - (NSInteger)daysSince:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSDayCalendarUnit fromDate:date toDate:self options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitDay fromDate:date toDate:self options:0]; NSInteger days = [components day]; return days; } @@ -292,7 +292,7 @@ - (NSInteger)daysSince:(NSDate *)date - (NSInteger)hoursSince:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSHourCalendarUnit fromDate:date toDate:self options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitHour fromDate:date toDate:self options:0]; NSInteger hours = [components hour]; return hours; } @@ -300,7 +300,7 @@ - (NSInteger)hoursSince:(NSDate *)date - (NSInteger)secondsSince:(NSDate *)date { NSCalendar *gregorian = [self gregorianUTCCalendar]; - NSDateComponents *components = [gregorian components:NSSecondCalendarUnit fromDate:date toDate:self options:0]; + NSDateComponents *components = [gregorian components:NSCalendarUnitSecond fromDate:date toDate:self options:0]; NSInteger seconds = [components second]; return seconds; }