截止到下个季度的日期
Round date up to next quarter
我需要在我的约会中增加 1 个季度 date("Y-m-d")
。
我有日期 2018-03-05
下个季度 2018-04-01
不是 2018-07-05
请问我该怎么做?
编辑
我用过这个代码,但我有一点问题
while ($annee <= $annenow) {
echo "$curMonth :: $annee $annenow <br>";
if($curMonth<4)
$curMonth=4;
else if($curMonth<7)
$curMonth=7;
else if($curMonth<9)
$curMonth=10;
else if($curMonth<12)
$curMonth=12;
else
{
$curMonth=1;
$anneedebut++;
}
$curQuarter = ceil($curMonth / 3);
$annee = "$anneedebut$curQuarter";
}
结果是:
09 :: 20183 20221
12 :: 20184 20221
1 :: 20191 20221
4 :: 20192 20221
7 :: 20193 20221
10 :: 20194 20221
12 :: 20194 20221
1 :: 20201 20221
4 :: 20202 20221
7 :: 20203 20221
10 :: 20204 20221
12 :: 20204 20221
1 :: 20211 20221
4 :: 20212 20221
7 :: 20213 20221
10 :: 20214 20221
12 :: 20214 20221
1 :: 20221 20221
我有 quater 4 repeate 两次?
但是我的代码非常大,如果存在我正在寻找小代码
从日期中取出月份,将其四舍五入到下一个 3(一个季度的月数)并加 1(因为我们使用的是基于 1 的系统)。
然后将新参数设置为下个季度月的1号
$date = new DateTimeImmutable("2018-03-05");
$month = (int) $date->format("m");
$nextQuarterMonth = ceil($month / 3) * 3 + 1;
$nextQuarter = $date->setDate($date->format("Y"), $nextQuarterMonth, 1);
echo $nextQuarter->format("Y-m-d");
PHP 的 DateTime
足够聪明,如果您的原始日期是在最后一个季度,则将第 13 个月视为下一年的一月。
//Months rounded up to the next higher interval
function roundUpMonth(string $date, int $numberMonth = 3) : string
{
$dt = date_create($date);
$month = $dt->format('Y') * 12 + $dt->format('n');
$month -= ($month-1)%$numberMonth - $numberMonth;
return $dt->setDate(0,$month,1)->format('Y-m-d');
}
echo roundUpMonth("2018-03-05"); //2018-04-01
echo roundUpMonth("2018-02-05",1); //2018-03-01
echo roundUpMonth("2018-05-07",2); //2018-07-01
echo roundUpMonth("2018-07-05",6); //2019-01-01
我需要在我的约会中增加 1 个季度 date("Y-m-d")
。
我有日期 2018-03-05
下个季度 2018-04-01
不是 2018-07-05
请问我该怎么做?
编辑 我用过这个代码,但我有一点问题
while ($annee <= $annenow) {
echo "$curMonth :: $annee $annenow <br>";
if($curMonth<4)
$curMonth=4;
else if($curMonth<7)
$curMonth=7;
else if($curMonth<9)
$curMonth=10;
else if($curMonth<12)
$curMonth=12;
else
{
$curMonth=1;
$anneedebut++;
}
$curQuarter = ceil($curMonth / 3);
$annee = "$anneedebut$curQuarter";
}
结果是:
09 :: 20183 20221
12 :: 20184 20221
1 :: 20191 20221
4 :: 20192 20221
7 :: 20193 20221
10 :: 20194 20221
12 :: 20194 20221
1 :: 20201 20221
4 :: 20202 20221
7 :: 20203 20221
10 :: 20204 20221
12 :: 20204 20221
1 :: 20211 20221
4 :: 20212 20221
7 :: 20213 20221
10 :: 20214 20221
12 :: 20214 20221
1 :: 20221 20221
我有 quater 4 repeate 两次?
但是我的代码非常大,如果存在我正在寻找小代码
从日期中取出月份,将其四舍五入到下一个 3(一个季度的月数)并加 1(因为我们使用的是基于 1 的系统)。
然后将新参数设置为下个季度月的1号
$date = new DateTimeImmutable("2018-03-05");
$month = (int) $date->format("m");
$nextQuarterMonth = ceil($month / 3) * 3 + 1;
$nextQuarter = $date->setDate($date->format("Y"), $nextQuarterMonth, 1);
echo $nextQuarter->format("Y-m-d");
PHP 的 DateTime
足够聪明,如果您的原始日期是在最后一个季度,则将第 13 个月视为下一年的一月。
//Months rounded up to the next higher interval
function roundUpMonth(string $date, int $numberMonth = 3) : string
{
$dt = date_create($date);
$month = $dt->format('Y') * 12 + $dt->format('n');
$month -= ($month-1)%$numberMonth - $numberMonth;
return $dt->setDate(0,$month,1)->format('Y-m-d');
}
echo roundUpMonth("2018-03-05"); //2018-04-01
echo roundUpMonth("2018-02-05",1); //2018-03-01
echo roundUpMonth("2018-05-07",2); //2018-07-01
echo roundUpMonth("2018-07-05",6); //2019-01-01