You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP循环生成存储当前及去年各月份起止时间戳的数组?

PHP生成当前及上一年所有月份起止时间戳数组

我来帮你搞定这个需求!用PHP的DateTime类处理日期能完美避开不同月份天数不同的坑,还能轻松生成标准的时间戳,下面是完整的实现方案:

实现代码

<?php
// 初始化目标数组,和你需要的结构完全匹配
$dates = [
    'previous dates' => [],
    'current dates' => []
];

// 获取当前年份和上一年份
$currentYear = date('Y');
$prevYear = $currentYear - 1;

// 处理上一年的所有月份
for ($month = 1; $month <= 12; $month++) {
    // 生成你需要的"月份, 年份"格式名称(比如 "November, 2017")
    $monthName = date('F, Y', strtotime("$prevYear-$month-01"));
    
    // 生成当月开始时间戳:当月第一天00:00:00
    $startDateTime = new DateTime("$prevYear-$month-01 00:00:00");
    $startTimestamp = $startDateTime->getTimestamp();
    
    // 生成当月结束时间戳:当月最后一天23:59:59,自动适配不同月份的天数
    $endDateTime = new DateTime("$prevYear-$month-01");
    $endDateTime->modify('last day of this month 23:59:59');
    $endTimestamp = $endDateTime->getTimestamp();
    
    // 把数据存入对应数组
    $dates['previous dates'][$monthName] = [
        'start' => $startTimestamp,
        'end' => $endTimestamp
    ];
}

// 处理当前年份的所有月份,逻辑和上一年一致
for ($month = 1; $month <= 12; $month++) {
    $monthName = date('F, Y', strtotime("$currentYear-$month-01"));
    
    $startDateTime = new DateTime("$currentYear-$month-01 00:00:00");
    $startTimestamp = $startDateTime->getTimestamp();
    
    $endDateTime = new DateTime("$currentYear-$month-01");
    $endDateTime->modify('last day of this month 23:59:59');
    $endTimestamp = $endDateTime->getTimestamp();
    
    $dates['current dates'][$monthName] = [
        'start' => $startTimestamp,
        'end' => $endTimestamp
    ];
}

// 可以取消注释查看生成的数组结果
// print_r($dates);
?>

关键细节说明

  • 时间戳准确性:用DateTime的modify方法获取当月最后一天,自动适配2月、大月小月的不同天数,比手动计算日期靠谱得多。
  • 灵活调整范围:如果不需要上一年的全部12个月(比如只取最后2个月),只需要修改循环的起始值,比如把上一年的循环改成for ($month = 11; $month <= 12; $month++)就行。
  • 格式完全匹配:生成的数组结构和你给出的示例完全一致,直接就能用在业务逻辑里。

内容的提问来源于stack exchange,提问作者Nooglers BIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:47:21