php 月初和月末的时间戳

kuarbcqp  于 2023-03-07  发布在  PHP
关注(0)|答案(8)|浏览(102)

如何使用PHP获得任何月份的第一分钟和最后一分钟的时间戳?

ttvkxqim

ttvkxqim1#

这需要PHP〉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');

(not测试)
参考:http://www.php.net/manual/en/class.datetime.php

iugsix8n

iugsix8n2#

$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');
imzjd6km

imzjd6km3#

最好的方法是这样做。
$第一天=日期(“m-01-Y h:i:s”,起始时间(“-1个月”));
$最后一天=日期(“月-日-时:分:秒”,起始时间(“-1个月”));

uqdfh47h

uqdfh47h4#

试试这个

echo date('Y-m-d', strtotime('first day of last month'));
 echo date('Y-m-d', strtotime('last day of last month'));
dw1jzc5e

dw1jzc5e5#

您可以使用mktimedate

$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);
}

DEMO

b4wnujal

b4wnujal6#

使用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);
2izufjch

2izufjch7#

使用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);
eaf3rand

eaf3rand8#

我觉得这样更好

$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);

相关问题