您不需要知道用户的时区,因为帖子发布后的时间与时区无关。
WordPress将您的时区设置为UTC,以便在内部,所有日期都处理相同且一致的时区。您应该避免使用php函数,而是使用WordPress提供的函数。
顺便说一下,human_time_diff()
做你想做的事。。
要获取帖子发布后的时间。。。
//Unix timestamp of post
$gmt_timestamp = get_post_time( \'G\', true, $post );
//Echo time since timestamp in human readable form
printf( __( \'%s ago\' ), human_time_diff( $gmt_timestamp ) );
编辑
human_time_diff()
不幸的是,只会持续几天。但这里也有一个估计周、月和年的方法(虽然显然不完全是因为一个月没有固定的天数)。这是未经测试的。
wpse_human_time_diff($from, $to=\'\'){
if ( empty($to) )
$to = time();
$diff = (int) abs($to - $from);
if ( $diff <= 3600 ){
$mins = round($diff / 60);
if ($mins <= 1) {
$mins = 1;
}
/* translators: min=minute */
$since = sprintf(_n(\'%s min\', \'%s mins\', $mins), $mins);
}elseif( $diff <= 86400 ){
$hours = round($diff / 3600);
$since = sprintf(_n(\'%s hour\', \'%s hours\', $hours), $hours);
}elseif( $diff <= 604800 ) {
$days = round($diff / 86400);
$since = sprintf(_n(\'%s day\', \'%s days\', $days), $days);
}elseif( $diff <= 2592000 ){
$weeks = round($diff / 604800);
$since = sprintf(_n(\'%s week\', \'%s weeks\', $weeks), $weeks);
}elseif( $diff <= 31536000 ){
$months = round($diff / 2592000);
$since = sprintf(_n(\'%s month\', \'%s months\', $months), $months);
}else{
$years = round($diff / 31536000)
$since = sprintf(_n(\'%s year\', \'%s years\', $years), $years);
}
return $since;
}