0

我完全被困在这里。我试图从当前时间到 7 天下午 6 点的计算中得到多少天的小时和分钟。我查看了我的 $difference 变量产生的秒数,当我进行数学运算以将其转换为天数小时和分钟时,它是正确的,但由于某种原因,当我在输出语句中调用特定的天数、小时和分钟时,它是不正确的。我究竟做错了什么。这是代码。

<?php
date_default_timezone_set('America/New_York');
$nextWeek = strtotime('+7 days');
$m = date('n', $nextWeek);
$d = date('j', $nextWeek);
$y = date('Y', $nextWeek);
$difference = mktime(18,0,0,$m,$d,$y) - time();


echo '<p>Current date and time is' .date(' l F d, Y '). 'at '.date('g:i a').' You have an appointment in a week on '.date(' n/j/Y ', $nextWeek).' at 6pm. There are ' .date(' j ', $difference).' days, ' .date(' g ', $difference).' hours, and ' .date(' i ', $difference).' minutes until your appointment.</p>';

echo mktime(18,0,0,$m,$d,$y),"\n";
echo $difference;

?>
4

2 回答 2

0

问题是您在date()不代表date的数字上使用 PHP 的函数。您的变量$difference表示两个日期之间的差异,以秒为单位。要获得正确的输出,您应该编写自己的函数将这些秒数转换为天数、小时数、分钟数等。

它可能看起来像这样:

function getTimeText($seconds)
{
    $return = array();

    $return["days"] = floor($seconds/86400); // 86400 seconds in a day
    $seconds -= ($return["days"]*86400);

    $return["hours"] = floor($seconds/3600); // 3600 seconds in an hour
    $seconds -= ($return["hours"]*3600);

    $return["minutes"] = floor($seconds/60); // 60 seconds in a minute

    return $return;
}
于 2012-08-24T15:50:28.180 回答
0

试试看这个。页面下方的示例向您展示了如何在天数中找到两个日期之间的差异。您应该可以使用它通过更改格式来返回当前时间与 7 天 18:00 时间之间的差异。

于 2012-08-24T15:52:42.103 回答