PHP Convert HTML Formatted Date
Published Date returned from Twitter Search API Atom Feed as 2008-11-03T21:30:06Z which needs to be converted to "X seconds/minutes/hours/days ago" for showing how long ago twitter messages were posted.
Think this can be done with php date() function using DATE_ATOM value?
function time_since($your_timestamp) {
$unix_timestamp = strtotime($your_timestamp);
$seconds = time() - $unix_timestamp;
$minutes = 0;
$hours = 0;
$days = 0;
$weeks = 0;
$months = 0;
$years = 0;
if ( $seconds == 0 ) $seconds = 1;
if ( $seconds> 60 ) {
$minutes = $seconds/60;
} else {
return add_s($seconds,'second');
}
if ( $minutes >= 60 ) {
$hours = $minutes/60;
} else {
return add_s($minutes,'minute');
}
if ( $hours >= 24) {
$days = $hours/24;
} else {
return add_s($hours,'hour');
}
if ( $days >= 7 ) {
$weeks = $days/7;
} else {
return add_s($days,'day');
}
if ( $weeks >= 4 ) {
$months = $weeks/4;
} else {
return add_s($weeks,'week');
}
if ( $months>= 12 ) {
$years = $months/12;
return add_s($years,'year');
} else {
return add_s($months,'month');
}
}
function add_s($num,$word) {
$num = floor($num);
if ( $num == 1 ) {
return $num.' '.$word.' ago';
} else {
return $num.' '.$word.'s ago';
}
}
echo time_since('2008-11-03T21:30:06Z');
strtotime will handle that date format, giving you a unix timestamp. You can then follow the algorithms on How do I calculate relative time? to get your result.
This is easy using the DateTime functionality introduced in PHP 5.2:
$posted = new DateTime('2008-11-03T21:30:06Z');
$now = new DateTime();
$interval = $posted->diff($now);
echo $interval->format('%a days'); // You can change this to be whatever format you like
Example
链接地址: http://www.djcxy.com/p/59020.html上一篇: PHP时区与Centos日期不同
下一篇: PHP转换HTML格式化日期