最近做了一个小应用程序,是读取新浪微博的。微博上面对于新发的微博,不是告诉你具体什么时候发布的,而是告诉你几秒钟之前,几分钟之前,几个小时之前之类的相对于现在的时间。可以使用下面代码来计算这个时间差。
-
(NSString
*
)timestamp
{
// Calculate distance time string
//
time_t now;
time( & now);
int distance = ( int )difftime(now, createdAt);
if (distance < ) distance = ;
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;
}
{
// Calculate distance time string
//
time_t now;
time( & now);
int distance = ( int )difftime(now, createdAt);
if (distance < ) distance = ;
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;
}
原文链接: http://www.cnblogs.com/zhuqil/archive/2011/04/29/2033028.html