时间错误(我的脚本)PHP

发布于 2024-10-06 00:49:07 字数 539 浏览 8 评论 0原文

我遇到了这个奇怪的错误。我基本上只是使用以下函数在格式为“12:20pm”的时间中添加几分钟...

function calc_arb_time($startTime, $amount){
        $startTime = date('Y-m-d') . substr($startTime,0,-2);
        $startTime = strtotime($startTime);


        $seconds = $amount*60;
        $startTime += $seconds;
        $newStartTime = date('g:ia', $startTime);
        return($newStartTime);
    }

echo calc_arb_time('12:20pm',20); // <-- this returns 12:40pm which is great

echo calc_arb_time('1:20pm',20); // this returns 1:40am... Why the AM??

I've got this weird bug happening. I'm basically just adding a few minutes to a time formatted like '12:20pm' with the following function...

function calc_arb_time($startTime, $amount){
        $startTime = date('Y-m-d') . substr($startTime,0,-2);
        $startTime = strtotime($startTime);


        $seconds = $amount*60;
        $startTime += $seconds;
        $newStartTime = date('g:ia', $startTime);
        return($newStartTime);
    }

echo calc_arb_time('12:20pm',20); // <-- this returns 12:40pm which is great

echo calc_arb_time('1:20pm',20); // this returns 1:40am... Why the AM??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野稚 2024-10-13 00:49:07

您没有采取任何措施来保留 ampm 部分吗?如果您不打算使用日期部分,也不必担心它。

这段代码更简单并且工作正常:

function calc_arb_time($startTime, $amount){
    $startTime = strtotime('+'.$amount.' minutes', strtotime($startTime));
    return date('g:ia', $startTime);
}
echo calc_arb_time('12:20pm',20).PHP_EOL;
echo calc_arb_time('1:20pm',20);

而且我不确定函数的名称反映了它的作用。你应该考虑改变它。

You're not doing anything to preserve the am or pm part? Also don't worry about the date part if you're not going to use it anyway.

This code is simpler and it works fine:

function calc_arb_time($startTime, $amount){
    $startTime = strtotime('+'.$amount.' minutes', strtotime($startTime));
    return date('g:ia', $startTime);
}
echo calc_arb_time('12:20pm',20).PHP_EOL;
echo calc_arb_time('1:20pm',20);

Also I'm not sure the name of the function reflects what it does. You should consider changing it.

笑脸一如从前 2024-10-13 00:49:07

您可能还想查看 DateTime

$date = DateTime::createFromFormat('g:ia', '12:20pm');
$date->add(new DateInterval('PT20M'));
echo $date->format('H:i:s');

$date = DateTime::createFromFormat('g:ia', '1:20pm');
$date->add(new DateInterval('PT20M'));
echo $date->format('H:i:s');

12:40:00
13:40:00

You might also want to look at the DateTime class:

$date = DateTime::createFromFormat('g:ia', '12:20pm');
$date->add(new DateInterval('PT20M'));
echo $date->format('H:i:s');

$date = DateTime::createFromFormat('g:ia', '1:20pm');
$date->add(new DateInterval('PT20M'));
echo $date->format('H:i:s');

Prints:

12:40:00
13:40:00
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文