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

Getting first day of the month, is outputting the wrong first day of the month

我想以 'day of the week' 格式显示月份的第一天。 例如,下面的代码应该 select 八月,并说 01 是星期四,但由于某种原因,下面的代码输出错误的星期五,在某些月份,例如五月它正确地说星期三。

$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 修复了未显示正确月份的错误。

你必须首先使用 date():

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

并且不必设置第一秒:)

为什么不使用日期时间?

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

详细了解 Relative formats

要让星期几落在任何一个月的第一天,您可以使用前缀 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');