I want to convert nsdate in to relative format like \"Today\",\"Yesterday\",\"a week ago\",\"a month ago\",\"a year ago\",\"date as it is\".
I have writ
To format the given "sourceDate" as "5:56 pm" for today, "yesterday" for any time yesterday, "January 16" for any day in the same year and "January 16, 2014". I am posting my own method.
sourceDate = //some date that you need to take into consideration
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitMinute | NSCalendarUnitHour | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
NSDateComponents *sourceDateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitMinute | NSCalendarUnitHour | NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate: sourceDate];
NSString* timestamp;
NSDateFormatter *formatSourceDate = [NSDateFormatter new];
[formatSourceDate setAMSymbol:@"AM"];
[formatSourceDate setPMSymbol:@"PM"];
//same day - time in h:mm am/pm
if (components.day == sourceDateComponents.day) {
NSLogInfo(@"time");
[formatSourceDate setDateFormat:@"h:mm a"];
timestamp = [NSString stringWithFormat:@"%@",[formatSourceDate stringFromDate:date]];
return timestamp;
}
else if (components.day - sourceDateComponents.day == 1) {
//yesterday
timestamp = NSLocalizedString(@"Yesterday", nil);
return timestamp;
}
if (components.year == sourceDateComponents.year) {
//september 29, 5:56 pm
[formatSourceDate setDateFormat:@"MMMM d"];
timestamp = [NSString stringWithFormat:@"%@",[formatSourceDate stringFromDate:date]];
return timestamp;
}
[formatSourceDate setDateFormat:@"MMMM d year"];
timestamp = [NSString stringWithFormat:@"%@",[formatSourceDate stringFromDate:date]];
return timestamp;
NSLogInfo(@"Timestamp : %@",timestamp);