您的位置:首页 > 移动开发 > Objective-C

objective-c计算相对于现在的时间差

2012-03-09 00:00 120 查看
最近做了一个小应用程序,是读取新浪微博的。微博上面对于新发的微博,不是告诉你具体什么时候发布的,而是告诉你几秒钟之前,几分钟之前,几个小时之前之类的相对于现在的时间。可以使用下面代码来计算这个时间差。

-
(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;
}

原文链接:
http://www.cnblogs.com/zhuqil/archive/2011/04/29/2033028.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: