如何使用PHP获取任意月份的第一分钟和最后一分钟的时间戳?
答案 0 :(得分:44)
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 59, date("n"), date("t"));
那是本月。如果您想在任何月份使用它,则相应地更改月份和日期参数。
如果你想每月生成它,你可以循环:
$times = array();
for($month = 1; $month <= 12; $month++) {
$first_minute = mktime(0, 0, 0, $month, 1);
$last_minute = mktime(23, 59, 59, $month, date('t', $first_minute));
$times[$month] = array($first_minute, $last_minute);
}
答案 1 :(得分:14)
使用PHP 5.3,你可以做到
$oFirst = new DateTime('first day of this month');
$oLast = new DateTime('last day of this month');
$oLast->setTime(23, 59, 59);
在PHP 5.2中
注意: AllThecode在下面的评论中指出,如果您执行$oFirst
部分,则下一个示例仅有效第一。如果将+1 month
添加到new DateTime
,结果将在该月的最后一天提前一个月(从PHP 5.5.9开始)。
$oToday = new DateTime();
$iTime = mktime(0, 0, 0, $oToday->format('m'), 1, $oToday->format('Y'));
$oFirst = new DateTime(date('r', $iTime));
$oLast = clone $oFirst;
$oLast->modify('+1 month');
$oLast->modify('-1 day');
$oLast->setTime(23, 59, 59);
答案 2 :(得分:3)
使用mktime生成时间戳,从小时/月/日/ ...值和cal_days_in_month获取一个月内的天数:
$month = 1; $year = 2011;
$firstMinute = mktime(0, 0, 0, $month, 1, $year);
$days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$lastMinute = mktime(23, 59, 0, $month, $days, $year);
答案 3 :(得分:3)
我认为更好
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 0, date("n"), date("t"));
是:
$first_minute = mktime(0, 0, 0, date("n"), 1);
$last_minute = mktime(23, 59, 0, date("n") + 1, 0);
答案 4 :(得分:2)
这需要PHP&gt; 5.2并需要调整“分钟”部分
$year = ...; // this is your year
$month = ...; // this is your month
$month = ($month < 10 ? '0' . $month : $month);
$start = new DateTime($year . '-' . $month . '-01 00:00:00');
$end = $start->modify('+1 month -1 day -1 minute'); //perhaps this need 3 "->modify"
echo $start->format('U');
echo $end->format('U');
(未经测试)
答案 5 :(得分:0)
$date = new \DateTime('now');//Current time
$date->modify("-1 month");//get last month
$startDate = $date->format('Y-m-01');
$endDate = $date->format('Y-m-t');
答案 6 :(得分:0)
最好的方法就是这样。
$ first_day = date('m-01-Y h:i:s',strtotime(“-1 months”));
$ last_day = date('m-t-Y h:i:s',strtotime(“-1 months”));