|
Posted by ZeldorBlat on 04/17/07 18:23
On Apr 17, 1:39 pm, JamesG <mailmeh...@gmail.com> wrote:
> I'm trying to convert a unix timestamp to a readable time, such as 4
> hours ago, or 25 minutes ago.
> My code is below:
>
> function ago($ts) {
> /* time difference */
> $ts = (time() - $ts);
>
> if($ts < 60) {
> /* <1 minute */
> return $ts . " seconds ago";
> } elseif($ts < 60 * 60) {
> /* <1 hour */
> return floor($ts / 60) . " minutes ago";
> } elseif ($ts < 60 * 60 * 2) {
> /* <2 hour */
> return "1 hour ago";
> } elseif ($ts < 60 * 60 * 24) {
> /* <24 hours = 1 day */
> return floor($ts / 60 * 60) . " hours ago";
> } elseif ($ts < 60 * 60 * 24 * 2) {
> /* <2 days */
> return "1 day ago";
> } elseif ($ts < 60 * 60 * 24 * 7) {
> /* <7 days = 1 week */
> return floor($ts / 60 * 60 * 24) . " days ago";
> } elseif ($ts < 60 * 60 * 24 * 30.5) {
> /* <30.5 days ~ 1 month */
> return floor($ts / 60 * 60 * 24 * 7) . " weeks ago";
> } elseif ($ts < 60 * 60 * 24 * 365) {
> /* <365 days = 1 year */
> return floor($ts / 60 * 60 * 24 * 30.5) . " months ago";
> } else {
> /* more than 1 year */
> return floor($ts / 60 * 60 * 24 * 365) . " years ago";
> }
>
> }
>
> Everything seems to work okay, except the "hours ago" case. A time 2
> hours ago will output "9692 hours ago", or a time 18 hours ago will
> read "9692 hours ago"!
>
> Anyone help here? Thanks in advance
It should be $ts / (60 * 60). Read about Operator Precedence:
<http://www.php.net/manual/en/
language.operators.php#language.operators.precedence>
Navigation:
[Reply to this message]
|