PHP 中的日期返回错误的星期几

Wrong day of the week returned by date in PHP

我从 date_parse 中得到以下数据:

$date_array['year'] = '2015';
$date_array['month'] = '4';
$date_array['day'] = '25';

我正在尝试获取该特定日期是星期几:

echo date('w',strtotime($date_array['day'] . " " . $date_array['month'] . " " . $date_array['year']));

这个 returns 4,这是星期四的代码,而那天是星期六,所以我期待 6。我也尝试用 strtotime 重新排序元素,认为这可能与我的时区设置有关,但结果我仍然得到 4

你可以这样使用:

 $d = $date_array;
 date("w", mktime(0, 0, 0, $d['month'], $d['day'], $d['year']));

我使用 mktime() 因为它工作得很好,你会得到一个正确的时间戳。此代码打印 6 那是正确的一天。

请注意,自 PHP 5.1.0 起,您可以使用 L 参数以更符合人类逻辑的方式获取从 1(星期一)到 7(星期日)的日期。

 date("L", mktime(0, 0, 0, $d['month'], $d['day'], $d['year']));

更多信息:http://php.net/manual/en/function.date.php

看看下面的代码:

$date_array = array();
$date_array['year'] = '2015';
$date_array['month'] = '04';
$date_array['day'] = '25';

$d = $date_array;

echo date('w-L-D',strtotime($date_array['year']."-".$date_array['month'] . "-" . $date_array['day']));//output: 6-0-Sat

有关格式的更多详细信息,请参阅 PHP: date - Manual

这里的问题是strtotime() does not recognize the format DD MM YYYY你用了;您可以改用国际格式 (YYYY-MM-DD)、欧洲格式 (DD-MM-YYYY) 或美国格式 (MM/DD/YYYY)。

例如:

echo date('w', strtotime("$date_array[year]-$date_array[month]-$date_array[day]"));

6,是星期六,是正确的。