using non deprecated NSCalendar and NSDate API

This commit is contained in:
michael starke
2016-02-24 14:20:45 +01:00
parent 627d48a74e
commit 840559630c
2 changed files with 23 additions and 24 deletions

View File

@@ -39,23 +39,23 @@ typedef NS_ENUM(NSUInteger, MPDatePreset) {
NSArray *dateItems = @[ NSLocalizedString(@"TOMORROW", ""), NSLocalizedString(@"ONE_WEEK", ""), NSLocalizedString(@"ONE_MONTH", ""), NSLocalizedString(@"90_DAYS", ""), NSLocalizedString(@"ONE_YEAR", "") ];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"SELECT_DATE_PRESET", "") action:NULL keyEquivalent:@""];
[item setTag:MPDatePresetNone];
item.tag = MPDatePresetNone;
[presetMenu addItem:item];
[presetMenu addItem:[NSMenuItem separatorItem]];
for(NSInteger iIndex = 0; iIndex < sizeof(tags)/sizeof(NSUInteger); iIndex++) {
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:dateItems[iIndex] action:NULL keyEquivalent:@""];
[item setTag:tags[iIndex]];
item.tag = tags[iIndex];
[presetMenu addItem:item];
}
[self.datePicker setDateValue:[NSDate date]];
[self.presetPopupButton setMenu:presetMenu];
self.datePicker.dateValue = [NSDate date];
self.presetPopupButton.menu = presetMenu;
}
- (IBAction)useDate:(id)sender {
self.didCancel = NO;
self.date = [self.datePicker dateValue];
self.date = self.datePicker.dateValue;
[self.popover performClose:self];
}
@@ -65,32 +65,32 @@ typedef NS_ENUM(NSUInteger, MPDatePreset) {
}
- (IBAction)setDatePreset:(id)sender {
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
MPDatePreset preset = [[sender selectedItem] tag];
MPDatePreset preset = ((NSPopUpButton *)sender).selectedTag;
switch(preset) {
case MPDatePresetTomorrow:
[offsetComponents setDay:1];
offsetComponents.day = 1;
break;
case MPDatePresetOneWeek:
[offsetComponents setWeek:1];
offsetComponents.weekOfMonth = 1;
break;
case MPDatePresetOneMonth:
[offsetComponents setMonth:1];
offsetComponents.month = 1;
break;
case MPDatePreset90Days:
[offsetComponents setDay:90];
offsetComponents.day = 90;
break;
case MPDatePresetOneYear:
[offsetComponents setYear:1];
offsetComponents.year = 1;
break;
case MPDatePresetNone:
default:
return; // Nothing to do;
}
NSDate *newDate = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];
[self.datePicker setDateValue:newDate];
self.datePicker.dateValue = newDate;
}
@end

View File

@@ -15,15 +15,15 @@
}
- (NSString *)humanized {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSMinuteCalendarUnit|NSHourCalendarUnit|NSDayCalendarUnit|NSWeekCalendarUnit|NSMonthCalendarUnit fromDate:self toDate:[NSDate date] options:0];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitMinute|NSCalendarUnitHour|NSCalendarUnitDay|NSCalendarUnitWeekOfMonth|NSCalendarUnitMonth fromDate:self toDate:[NSDate date] options:0];
/* More than one month in the past, give full date */
if([components month] > 1) {
if(components.month > 1) {
return [NSDateFormatter localizedStringFromDate:self
dateStyle:NSDateFormatterShortStyle
timeStyle:NSDateFormatterShortStyle];
}
NSUInteger weeks = [components week];
NSUInteger weeks = components.weekOfMonth;
/* More than one week, less than a month */
if(weeks > 1) {
NSString *weekTemplate = NSLocalizedString(@"%ld_WEEKS_AGO", "% Weeks ago");
@@ -34,7 +34,7 @@
return NSLocalizedString(@"ONE_WEEK_AGO", "one week ago");
}
/* Last week */
NSUInteger days = [components day];
NSUInteger days = components.day;
if(days > 3) {
return NSLocalizedString(@"LAST_WEEK", "last week");
}
@@ -48,14 +48,13 @@
return NSLocalizedString(@"YESTERDAY", "Yesterday");
}
/* Hours ago */
if([components hour] > 1) {
if(components.hour > 1) {
NSString *hourTemplate = NSLocalizedString(@"%ld_HOURS_AGO", "% Hours ago");
return [NSString stringWithFormat:hourTemplate, [components hour]];
return [NSString stringWithFormat:hourTemplate, components.hour];
}
NSInteger minutes = [components minute];
if(minutes > 1) {
if(components.minute > 1) {
NSString *minuteTemplate = NSLocalizedString(@"%ld_MINUTES_AGO", "% Minutes ago");
return [NSString stringWithFormat:minuteTemplate, minutes];
return [NSString stringWithFormat:minuteTemplate, components.minute];
}
return NSLocalizedString(@"JUST_NOW", "Just now");
}