php date()和到期日期()

时间:2016-04-19 16:13:48

标签: php date datetime timestamp

我正在用PHP创建一个应用程序,允许用户创建一个最初持续7天的“帖子”,用户可以随时添加7天的增量。我在处理php日期('Ymd H:i:s')函数时遇到了麻烦,并在已经建立的开始日期添加了几天,该日期是在发布'post'之后从datebase中提取的......

$timestamp = "2016-04-20 00:37:15";
$start_date = date($timestamp);

$expires = strtotime('+7 days', $timestamp);
//$expires = date($expires);

$date_diff=($expires-strtotime($timestamp)) / 86400;

echo "Start: ".$timestamp."<br>";
echo "Expire: ".$expires."<br>";

echo round($date_diff, 0)." days left";

这就是我到目前为止所做的,而且对我来说并没有做太多。有人能告诉我一个正确的方法吗?

2 个答案:

答案 0 :(得分:3)

你几乎拥有它,你忘了在添加7天之前将$ timestamp转换为时间戳。

$timestamp = "2016-04-20 00:37:15";
$start_date = date($timestamp);

$expires = strtotime('+7 days', strtotime($timestamp));
//$expires = date($expires);

$date_diff=($expires-strtotime($timestamp)) / 86400;

echo "Start: ".$timestamp."<br>";
echo "Expire: ".date('Y-m-d H:i:s', $expires)."<br>";

echo round($date_diff, 0)." days left";

答案 1 :(得分:1)

一种可能的方式:

/* PHP/5.5.8 and later */
$start = new DateTimeImmutable('2016-04-20 00:37:15');
$end = $start->modify('+7 days');
$diff = $end->diff($start);

您可以根据自己的喜好格式化$diff。由于您似乎需要几天:

echo $diff->format('%d days');

demo

对于旧版本,语法稍微复杂一些:

/* PHP/5.3.0 and later */
$start = new DateTime('2016-04-20 00:37:15');
$end = clone $start;
$end = $end->modify('+7 days');
$diff = $end->diff($start);

demo