0

我需要将秒数转换为日期,然后将时差显示为天、小时和秒。

但是由于某种原因,在几天之后,在下一个全天之前的最后一个小时,我得到了负小时值。现在,如果日期大于 38 天(在 11 月 1 日之前),则会出现此问题。也许明天这个值会有所不同,我不确定。

代码:

$s = 84600; // 23.5 h in seconds
$s += (60*60*24)*38; // add 38 days in seconds
$d = (new \DateTime())->modify("-".$s."seconds");
echo (new \DateTime())->diff($d)->format("%a days %h:%I");
// shows: 38 days -1:30

相同的代码,相差 1 天:

$s = 84600; // 23.5 h in seconds
$s += (60*60*24)*37; // add 37 days in seconds
$d = (new \DateTime())->modify("-".$s."seconds");
echo (new \DateTime())->diff($d)->format("%a days %h:%I");
// shows: 37 days 23:30

PHP 版本 5.6.2。在本地主机、服务器和http://sandbox.onlinephpfunctions.com/上进行了测试,结果相同。

4

1 回答 1

-2

不确定您是否正在寻找这种解决方法

   <?php
    $s= 84600;
    $ts=  strtotime('38 day 30 second', 0);
    $difference=$ts-$s;
    $days = floor($difference / 86400);
    $hours = floor(($difference - $days * 86400) / 3600);
    $minutes = floor(($difference - $days * 86400 - $hours * 3600) / 60);
    $seconds = floor($difference - $days * 86400 - $hours * 3600 - $minutes * 60);

    echo "{$days} days {$hours} hours {$minutes} minutes {$seconds} seconds";
?>

//Output 37 days 0 hours 30 minutes 30 seconds
于 2015-12-10T04:23:58.340 回答