PHP 周转季度(日期)

PHP week to quarter (date)

我将 的日期信息作为 varchar 存储到我的 SQL 数据库 table 中。示例:2022-W10 我想在本周结束 季度 。在我的例子中是 2022 年第 1 季度。PHP 有可能吗?我没有在 PHP date() 文档中找到任何相关内容。

我的意思是这个问题可以通过以下步骤解决:

<?php
$date = '2022-W10';

// 1. parce year & week from string
preg_match('/(\d{4})-W(\d+)/', $date, $matches);
$year = $matches[1];
$week_no = $matches[2];
printf('Year: %d, Week no.: %d' . PHP_EOL, $year, $week_no);

// 2. create date by year & week number
$week_start = new DateTime();
$week_start->setISODate($year, $week_no);

// 3. get month number from date
$month = $week_start->format('n');
printf('Month: %d' . PHP_EOL, $month);

// 4. get quarter
$quarter = ceil($month/3);

printf('Quarter: %d' . PHP_EOL, $quarter);

Test PHP date conversion online

日期对象可以直接从字符串创建,例如'2022-W10',月份可以使用格式化方法确定。季度的计算只是一些学校数学。

$dateFromDb = '2022-W10';

$month = date_create($dateFromDb)->format('n');
$quarter = (int)(($month+2)/3);  //int(1)

如果还需要年份,可用此方案:

$dateFromDb = '2022-W49';

$dateTime = date_create($dateFromDb);
$quarter = (int)(($dateTime->format('n')+2)/3);

echo 'Quarter '.$quarter.' Year '.$dateTime->format('Y');