gpt4 book ai didi

PHP时差类返回不同时差

转载 作者:行者123 更新时间:2023-11-29 18:17:19 25 4
gpt4 key购买 nike

我需要有关此代码的帮助。我正在尝试获取数据库中的时间与提前 48 小时之间的时差。我想要的是数据记录到数据库的时间和提前 48 小时的时间差。所以这就像提前 48 小时倒计时。

例如,我在 2017-10-18 02:49:25 此时在我的数据库中记录了一条数据。

有时返回的结果比预期结果低 2 小时。

$date = '2017-10-18 02:49:25';

$date1 = new DateTime($date.' A');
$date1->modify('+2 day'); //am trying to get 48 hours ahead of the time in my DB
$tomorrowDATE = $date1->format('Y-m-d h:i:s A');

$starttimestamp = strtotime($date);
$endtimestamp = strtotime($tomorrowDATE);

//Here am getting time difference in hours between when the data was logged
into my DB and current time of the day
$currenttime = round(abs(strtotime(date('Y-m-d h:i:s A')) - $starttimestamp)/3600);

$difference = round(abs($endtimestamp - $starttimestamp)/3600);
print $difference - $currenttime . 'hour left';

最佳答案

您开始使用 DateTime,但后来又恢复为不使用它。您可以使用 DateTime 来完成整个事情:

<?php

# Change accordingly
date_default_timezone_set('America/Montreal');

# Time in database
$readfromdb = '2017-10-24 02:49:25 A';
$datedb = new DateTime($readfromdb);

$datedbplus48 = new DateTime($readfromdb);
$datedbplus48->modify('+2 day');

$datenow = new DateTime(); # default to now

$difference = $datedbplus48->diff($datenow);

echo "<pre>\n";
echo "DATEDB ";
echo $datedb->format('Y-m-d h:i:s');
echo "\nDATEPLUS48 ";
echo $datedbplus48->format('Y-m-d h:i:s');
echo "\nDATENOW ";
echo $datenow->format('Y-m-d h:i:s');
echo "\nDIFF ";
echo $difference->days * 24 + $difference->format('%H');
echo "</pre>\n";

?>

我假设:

  • readfromdb:插入时间,在 now() 之前完成
  • datedb:readfromdb 的日期时间对象
  • datedbplus48:从数据库读取 + 48h
  • datenow:当前时间
  • 差异:datedbplus48 - datenow
  • 输出是小时差。

结果:

DATEDB      2017-10-24 02:49:25DATEPLUS48  2017-10-26 02:49:25DATENOW     2017-10-24 09:03:40DIFF        36

关于PHP时差类返回不同时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com