我想以“星期几”格式显示每月的第一天。 例如,下面的代码应选择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修复了一个错误,因为它没有显示正确的月份。
答案 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');