gpt4 book ai didi

PHP//转换/计算日期

转载 作者:行者123 更新时间:2023-11-27 23:56:16 25 4
gpt4 key购买 nike

两天以来我一直在尝试解决这个问题,但没有成功...首先是我的代码:

PHP 版本:5.4

脚本 1:

query = "SELECT start, end FROM timetable WHERE ........";
$result = mysql_query($query, $db) or die(mysql_error());
$sqlarr = mysql_fetch_array($result, MYSQL_ASSOC);
$times = array($sqlarr['start'], $sqlarr['end']);

$calced = strtotime($times[1]) - strtotime($times[0]);
$total = date("H:i:s", $calced-3600); //<-- -3600 Fixed it
echo "<br>Total: ".$total;

开始和结束时间的格式为 00:00:00。每次此脚本计算时,它都会在结果后附加 1 小时。所以如果我想要 5 分钟的结果,我会得到 01:00:05。为什么???

这个就更奇怪了。脚本 2:

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo " | ".$row['total']."<br>";
$add += strtotime($row['total']);}

echo $add;

第一个脚本计算从开始到结束的总时间。第二个应该从数据库中获取总时间并计算所有条目的总和。对于每个条目,第二个脚本减去 2 小时。

例子:数据库 => 开始 = 12:32:00 结束 = 12:32:15

Script1 Result1 = 01:00:15(这个额外的一小时是从哪里来的?)已修复

每个 Result1 都存储在同一个表(db)中。 Script2 正在加载所有这些行并通过 while 循环处理它们。

脚本根据条目数减去服务小时数。
0 个条目 => 总计:00:00:00
1 个条目 => 总计:23:00:xx
2 个条目 => 总计:20:00:xx
3 个条目 => 总计:18:00:xx
4 个条目 => 总计:16:00:xx
因此,对于 2 个条目,它会继续从每个总计算中减去 2 小时,这显然是不正确的。

谢谢你们。使用 DateTime 使这变得简单且没有错误!

最佳答案

我不太确定你使用 strtotime 函数的情况,但我已经尝试过这个解决方案并且它有效,如果你有 php > 5.2:

您可以使用 DateTime类和 date_diff 函数来获取日期差异,请在此处阅读更多信息:http://us3.php.net/manual/en/datetime.diff.php

例子:

// start date
$start = new DateTime("09:23:38");
// end date
$end = new DateTime("09:23:54");

// calculate difference
$calc = date_diff($start, $end);

// prints 00:00:16
echo $calc->format('%h:%i:%s');

根据 this answer似乎默认日期从 1:00:00 开始,因此您可以像这样将日期减去 3600 秒(1 小时):

$start = strtotime("11:23:38");
$end = strtotime("11:23:54");

$calc = $end - $start;
echo date('H:i:s', $calc - 3600);

关于PHP//转换/计算日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823725/

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