gpt4 book ai didi

php - 如何使用 PHP 获取到午夜的小时数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:00 26 4
gpt4 key购买 nike

场景:一条记录​​被输入到数据库中。

我正在尝试计算以下等式:

  1. 如何获取自添加记录以来的小时数。
  2. 如何获取自记录以来到午夜还剩多少小时已添加。

鉴于这些时间:

  • 日期/时间:2012-08-22 20:11:20
  • 时间戳:1345684280
  • 今晚午夜:2012-08-23 00:00:00
  • 午夜时间戳:1345698000

我觉得我走在正确的轨道上。只需要一些适当的数学来进行计算?我的数学很糟糕。任何帮助或指导将不胜感激。我不是在找人帮我完成这个。只是寻求有关我做错了什么或如何做得更好的建议。也许可以解释实现我的目标所必需的数学公式。

这是我目前所拥有的:

class tools{

public function __construct(){
}

public function check_time($time, $request){
$time = strtotime($time);
if($request == 'since'){
$theTime = time() - $time;
$prefix = 'Since:';
} elseif($request == 'until'){
$midnight = mktime(0, 0, 0, date('n'), date('j'), date('Y'));
$theTime = $midnight - $time;
$prefix = 'Until:';
}

$tokens = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);

foreach($tokens as $unit => $text){
if($theTime < $unit) continue;
$duration = floor($theTime / $unit);
return $prefix.' '.$duration.' '.$text.(($duration>1)?'s':'');
}
}
}// EoF tools class

$tools = new tools();

print_r($tools->check_time('2012-08-22 20:11:20', 'since'));
print_r($tools->check_time('2012-08-22 20:11:20', 'until'));

最佳答案

这里的解决方案很简单。有一个小错误导致了您的所有问题。

在您的代码中,您有这个来计算午夜。

$midnight = mktime(0, 0, 0, date('n'), date('j'), date('Y'));

这是不正确的,因为它使用的是今天的午夜(本来是今天的 00:00,但是从现在开始的许多小时之前。你想要明天的午夜,因为它被认为是 24 小时时间的 00:00,并且是明天. 正确的做法是这样的:

$midnight = strtotime("tomorrow 00:00:00");

请记住,strtotime() 以 GMT 为基础,因此请确保您在文件/应用程序中设置了默认时区。

我希望我的回答很清楚,并解释了为什么您发布的代码是错误的以及如何修复它。

关于php - 如何使用 PHP 获取到午夜的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095566/

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