Recently, a small application was developed to read Sina Weibo. The newly published Weibo posts on Weibo do not tell you when to release it, but tell you the time relative to the current time a few seconds ago, a few minutes ago, or a few hours ago. You can use the following code to calculate the time difference.
- (NSString*)timestamp
{
// Calculate distance time string
//
time_t now;
time(&now);
int distance = (int)difftime(now, createdAt);
if (distance < 0) distance = 0;
if (distance < 60) {
self.timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "second ago" : "seconds ago"];
}
else if (distance < 60 * 60) {
distance = distance / 60;
self.timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "minute ago" : "minutes ago"];
}
else if (distance < 60 * 60 * 24) {
distance = distance / 60 / 60;
self.timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "hour ago" : "hours ago"];
}
else if (distance < 60 * 60 * 24 * 7) {
distance = distance / 60 / 60 / 24;
self.timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "day ago" : "days ago"];
}
else if (distance < 60 * 60 * 24 * 7 * 4) {
distance = distance / 60 / 60 / 24 / 7;
self.timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "week ago" : "weeks ago"];
}
else {
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
}
NSDate *date = [NSDate dateWithTimeIntervalSince1970:createdAt];
self.timestamp = [dateFormatter stringFromDate:date];
}
return timestamp;
}