gpt4 book ai didi

php - 向 Unix 时间戳添加 1 个月的问题

转载 作者:行者123 更新时间:2023-12-04 05:02:00 26 4
gpt4 key购买 nike

出于某种原因,我无法让 strtotime('+1 月) 工作。这是我的代码;

$Date   = $_REQUEST['date']; //This is a unix time stamp
$Start = $_REQUEST['start']; //This is a unix time stamp
$End = $_REQUEST['end']; //This is a unix time stamp

在我的日期上加一个月;
$monStart =strtotime('+1 month', $Start);
$monEnd =strtotime('+1 month', $End);
$monDate =strtotime('+1 month', $Date);

然后显示我更改的日期;
$vEnd = date('m/d/Y', $monEnd);
$vStart = date('m/d/Y', $monStart);
$vDate = date('m/d/Y', $monDate);

我遇到的问题是提供的日期;
$Date = 1/31/2013
$Start = 1/01/2013
$End = 1/31/2013

返回;
$vDate = 3/03/2013
$vStart = 2/01/2013 //Only correct one
$vEnd = 3/03/2013

请有人可以帮助我吗?

最佳答案

它跳到三月,因为今天是 1 月 31 日,再加上一个月就是 2 月 31 日,它不存在,所以它移到下一个有效日期。这是一个 PHP 错误。您可以在 https://bugs.php.net/bug.php?id=44073 获得更多信息。

你可以试试 DateTime克服这种情况。您可以根据您的要求使用此功能

function add_month($date_value, $months, $format = 'm/d/Y') {
$date = new DateTime($date_value);
$start_day = $date->format('j');

$date->modify("+{$months} month");
$end_day = $date->format('j');

if ($start_day != $end_day)
$date->modify('last day of last month');

return $date->format($format);
}

现在你可以调用:
$vEnd = add_month($monEnd, 1);
$vStart = add_month($monStart, 1);
$vDate = add_month($monDate, 1);

这会给你:
$vDate = '02/28/2013';
$vStart = '02/01/2013';
$vEnd = '02/28/2013';

希望这对你有帮助:)

关于php - 向 Unix 时间戳添加 1 个月的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043626/

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