我在我的评论页面上工作,我有这个简单的问题 如何将我的数据库结果更改为“[结果x]天/月/年前”? 看起来像是死亡日期减去( - )发布日期。但是,我该怎么写核心呢。
感谢您的帮助。
这是我的代码,
<?php
$sql=mysql_query("SELECT * FROM reviews ORDER BY review_code DESC LIMIT 3");
while($db=mysql_fetch_array($sql)){
echo "
<div style='padding-bottom: 25px;'>
Post Date: ".$db['post_date']." minus(-) Current Time: ".time()."
</div>
";}
?>
结果是
Post Date: 2017-06-27 08:00:00 minus(-) Current Time: 1498701679
谁能帮助我吗?请..
答案 0 :(得分:1)
看看这里:http://php.net/manual/en/datetime.diff.php
你基本上应该做的是创建两个日期时间对象并使用diff函数:
$datetime1 = new DateTime($db['post_date']); // Date post was created
$datetime2 = new DateTime(); // Default DateTime is now
$interval = $datetime1->diff($datetime2);
echo $interval->format('Post created %a days ago');
如果您想动态更改措辞(天,月,年等),请查看以下评论:http://php.net/manual/en/datetime.diff.php#97880
答案 1 :(得分:0)
EDIT 哎呀没有内置但在链接提供。
function time_elapsed_A($secs){
$bit = array(
'y' => $secs / 31556926 % 12,
'w' => $secs / 604800 % 52,
'd' => $secs / 86400 % 7,
'h' => $secs / 3600 % 24,
'm' => $secs / 60 % 60,
's' => $secs % 60
);
foreach($bit as $k => $v)
if($v > 0)$ret[] = $v . $k;
return join(' ', $ret);
}
function time_elapsed_B($secs){
$bit = array(
' year' => $secs / 31556926 % 12,
' week' => $secs / 604800 % 52,
' day' => $secs / 86400 % 7,
' hour' => $secs / 3600 % 24,
' minute' => $secs / 60 % 60,
' second' => $secs % 60
);
foreach($bit as $k => $v){
if($v > 1)$ret[] = $v . $k . 's';
if($v == 1)$ret[] = $v . $k;
}
array_splice($ret, count($ret)-1, 0, 'and');
$ret[] = 'ago.';
return join(' ', $ret);
}
答案 2 :(得分:0)
没有内置功能来执行此操作。你必须手动编写代码,找到现在和日期之间的差异,并将其转换为时间单位。
但是你不必在这里重新发明轮子。像Moment这样的日期操作库已经为此实现了功能。 (查看Moment::calendar()
方法)
答案 3 :(得分:0)
以下功能由社区http://php.net/manual/en/function.time.php提供。它返回一个人类可读的数秒表示。因此,请在现在和您的约会之间以秒为单位提供它。
function time_elapsed_B($secs){
$bit = array(
' year' => $secs / 31556926 % 12,
' week' => $secs / 604800 % 52,
' day' => $secs / 86400 % 7,
' hour' => $secs / 3600 % 24,
' minute' => $secs / 60 % 60,
' second' => $secs % 60
);
foreach($bit as $k => $v){
if($v > 1)$ret[] = $v . $k . 's';
if($v == 1)$ret[] = $v . $k;
}
array_splice($ret, count($ret)-1, 0, 'and');
$ret[] = 'ago.';
return join(' ', $ret);
}
使用示例:
$seconds = strtodate($db['post_date']);
echo time_elapsed_B(time() - $seconds);