PHP 输出本月,本季度,本年,上月,上季度,上一年的开始和结束日期
封面图
•
2025-11-28
•
PHP
215
0
0
0
在 PHP 中,可以使用 `DateTime` 类来方便地获取本月、本季度、本年、上月、上季度、上一年的开始和结束日期。下面是一个完整的示例代码,展示如何输出这些日期: ```php <?php // 当前时间 $now = new DateTime(); // 获取当前年份、月份、季度 $currentYear = $now->format('Y'); $currentMonth = $now->format('m'); $currentQuarter = ceil((int)$now->format('n') / 3); // 1-4 季度 // 输出当前时间 echo "当前时间: " . $now->format('Y-m-d H:i:s') . "\n\n"; // 本月 $firstDayOfMonth = new DateTime($currentYear . '-' . $currentMonth . '-01'); $lastDayOfMonth = (new DateTime($currentYear . '-' . $currentMonth . '-01'))->modify('last day of this month'); echo "本月:\n"; echo "开始日期: " . $firstDayOfMonth->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfMonth->format('Y-m-d') . "\n\n"; // 本季度 $quarterStartMonth = ($currentQuarter - 1) * 3 + 1; $firstDayOfQuarter = new DateTime($currentYear . '-' . sprintf('%02d', $quarterStartMonth) . '-01'); $lastDayOfQuarter = (new DateTime($currentYear . '-' . sprintf('%02d', $quarterStartMonth) . '-01'))->modify('last day of this quarter'); echo "本季度:\n"; echo "开始日期: " . $firstDayOfQuarter->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfQuarter->format('Y-m-d') . "\n\n"; // 本年 $firstDayOfYear = new DateTime($currentYear . '-01-01'); $lastDayOfYear = new DateTime($currentYear . '-12-31'); echo "本年:\n"; echo "开始日期: " . $firstDayOfYear->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfYear->format('Y-m-d') . "\n\n"; // 上月 $prevMonth = (new DateTime())->modify('first day of last month'); $lastDayOfPrevMonth = (new DateTime())->modify('last day of last month'); echo "上月:\n"; echo "开始日期: " . $prevMonth->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfPrevMonth->format('Y-m-d') . "\n\n"; // 上季度 $prevQuarter = $currentQuarter - 1; if ($prevQuarter < 1) { $prevQuarter = 4; $prevYear = $currentYear - 1; } else { $prevYear = $currentYear; } $quarterStartMonth = ($prevQuarter - 1) * 3 + 1; $firstDayOfPrevQuarter = new DateTime($prevYear . '-' . sprintf('%02d', $quarterStartMonth) . '-01'); $lastDayOfPrevQuarter = (new DateTime($prevYear . '-' . sprintf('%02d', $quarterStartMonth) . '-01'))->modify('last day of this quarter'); echo "上季度:\n"; echo "开始日期: " . $firstDayOfPrevQuarter->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfPrevQuarter->format('Y-m-d') . "\n\n"; // 上一年 $firstDayOfPrevYear = new DateTime(($currentYear - 1) . '-01-01'); $lastDayOfPrevYear = new DateTime(($currentYear - 1) . '-12-31'); echo "上一年:\n"; echo "开始日期: " . $firstDayOfPrevYear->format('Y-m-d') . "\n"; echo "结束日期: " . $lastDayOfPrevYear->format('Y-m-d') . "\n"; ?> ``` ### 输出示例(假设当前是 2025-04-05): ``` 当前时间: 2025-04-05 12:34:56 本月: 开始日期: 2025-04-01 结束日期: 2025-04-30 本季度: 开始日期: 2025-01-01 结束日期: 2025-03-31 本年: 开始日期: 2025-01-01 结束日期: 2025-12-31 上月: 开始日期: 2025-03-01 结束日期: 2025-03-31 上季度: 开始日期: 2024-10-01 结束日期: 2024-12-31 上一年: 开始日期: 2024-01-01 结束日期: 2024-12-31 ``` --- ### 注意事项: - 使用 `DateTime::modify()` 可以灵活处理日期的增减。 - 如果需要支持中文日期格式,可以使用 `setLocale()` 或者自定义格式。 如果你有特定的时区需求,也可以加上 `setTimezone()` 来设置时区,例如: ```php $now = new DateTime('now', new DateTimeZone('Asia/Shanghai')); ``` 如需我帮你封装成函数或处理其他日期逻辑,请告诉我!
上一篇:
php生成签名及验证签名
下一篇:
php判断一个字符是否是汉字
标题录入,一次不能超过6条
留言
评论