From fb82899e3d04fb866925d1ab3f46bc530e95a986 Mon Sep 17 00:00:00 2001 From: Aaron Douglas Date: Wed, 19 Mar 2014 14:53:03 -0500 Subject: [PATCH 1/2] Switched to NSDateComponents to create the date "short string" This change also allows for localization of the units of time single characters. NSDateComponents seems to perform well enough during scrolling - CALayer stuff swamped the CPU comparatively during instrumentation. --- WordPress/Classes/NSDate+StringFormatting.m | 30 ++++++++++++--------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/WordPress/Classes/NSDate+StringFormatting.m b/WordPress/Classes/NSDate+StringFormatting.m index f5709da3eebe..2e18472215d5 100644 --- a/WordPress/Classes/NSDate+StringFormatting.m +++ b/WordPress/Classes/NSDate+StringFormatting.m @@ -12,19 +12,23 @@ @implementation NSDate (StringFormatting) - (NSString *)shortString { NSString *shortString; - NSTimeInterval diff = [[NSDate date] timeIntervalSince1970] - [self timeIntervalSince1970]; - - if(diff < 60) { - shortString = [NSString stringWithFormat:@"%is", (int)diff]; - } else if(diff < 3600) { - shortString = [NSString stringWithFormat:@"%im", (int)floor(diff / 60)]; - } else if (diff < 86400) { - shortString = [NSString stringWithFormat:@"%ih", (int)floor(diff / 3600)]; - } else { - shortString = [NSString stringWithFormat:@"%id", (int)floor(diff / 86400)]; - } - - return shortString; + NSCalendar *calendar = [NSCalendar currentCalendar]; + NSDateComponents *dateComponents = [calendar components:NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit + fromDate:self + toDate:[NSDate date] + options:0]; + + if (dateComponents.day > 0) { + shortString = [NSString stringWithFormat:@"%i%@", dateComponents.day, NSLocalizedString(@"d", @"Days single character abbreviation")]; + } else if (dateComponents.hour > 0) { + shortString = [NSString stringWithFormat:@"%i%@", dateComponents.hour, NSLocalizedString(@"h", @"Hours single character abbreviation")]; + } else if (dateComponents.minute > 0) { + shortString = [NSString stringWithFormat:@"%i%@", dateComponents.minute, NSLocalizedString(@"m", @"Minutes single character abbreviation")]; + } else { + shortString = [NSString stringWithFormat:@"%i%@", dateComponents.second, NSLocalizedString(@"s", @"Seconds single character abbreviation")]; + } + + return shortString; } @end From 53ae5eb32a9abc32e00bfc680c1057c53e49c825 Mon Sep 17 00:00:00 2001 From: Aaron Douglas Date: Thu, 20 Mar 2014 07:53:43 -0500 Subject: [PATCH 2/2] Made shortString a bit more translatable --- WordPress/Classes/NSDate+StringFormatting.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/WordPress/Classes/NSDate+StringFormatting.m b/WordPress/Classes/NSDate+StringFormatting.m index 2e18472215d5..fc041d427671 100644 --- a/WordPress/Classes/NSDate+StringFormatting.m +++ b/WordPress/Classes/NSDate+StringFormatting.m @@ -19,13 +19,13 @@ - (NSString *)shortString { options:0]; if (dateComponents.day > 0) { - shortString = [NSString stringWithFormat:@"%i%@", dateComponents.day, NSLocalizedString(@"d", @"Days single character abbreviation")]; + shortString = [NSString stringWithFormat:NSLocalizedString(@"%id", @"Days duration single character abbreviation"), dateComponents.day]; } else if (dateComponents.hour > 0) { - shortString = [NSString stringWithFormat:@"%i%@", dateComponents.hour, NSLocalizedString(@"h", @"Hours single character abbreviation")]; + shortString = [NSString stringWithFormat:NSLocalizedString(@"%ih", @"Hours duration single character abbreviation"), dateComponents.hour]; } else if (dateComponents.minute > 0) { - shortString = [NSString stringWithFormat:@"%i%@", dateComponents.minute, NSLocalizedString(@"m", @"Minutes single character abbreviation")]; + shortString = [NSString stringWithFormat:NSLocalizedString(@"%im", @"Minutes duration single character abbreviation"), dateComponents.minute]; } else { - shortString = [NSString stringWithFormat:@"%i%@", dateComponents.second, NSLocalizedString(@"s", @"Seconds single character abbreviation")]; + shortString = [NSString stringWithFormat:NSLocalizedString(@"%is", @"Seconds duration single character abbreviation"), dateComponents.second]; } return shortString;