获取月份的第一天,输出错误的月份的第一天

时间:2019-05-31 20:38:33

标签: php date strtotime

我想以“星期几”格式显示每月的第一天。 例如,下面的代码应选择8月,并说01的星期几是星期四,但由于某种原因,下面的代码输出的周五是错误的,在某些月份(例如5月)它正确地表示了星期三

$monthNumber = 3;
$base = strtotime(date('Y-m',time()) . '-01 00:00:01');
$dateTest = date("Ym" . 1, strtotime($monthNumber . " month", $base));
$unixTimestamp = strtotime($dateTest, $base);
echo date("l", $unixTimestamp);

有人有什么想法让它显示正确的一天吗?

$ base修复了一个错误,因为它没有显示正确的月份。

3 个答案:

答案 0 :(得分:3)

为什么不使用dateTime?

echo (new \DateTime('first day of august 2019'))->format('l');

详细了解Relative formats

答案 1 :(得分:0)

您必须首先使用date():

$base = date('Y-m',time()) . '-01 00:00:00';

也不必设置第一秒:)

答案 2 :(得分:0)

要获取星期几在每个月的第一天,您可以使用前缀first day of,例如

echo (new \DateTime('first day of August'))->format('l');

这将在2019年8月的星期四正确显示。

如果您想使用数月来动态地进行操作,则可以像尝试那样创建一个虚拟日期。

$timeString = sprintf('01.%02d.%04d', 8, 2019); // replace the numbers with your variables
echo (new \DateTime($timeString))->format('l');