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);
日期对象可以直接从字符串创建,例如'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');
我将 周 的日期信息作为 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);
日期对象可以直接从字符串创建,例如'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');