在PHP中按日期返回的错误日期

时间:2016-02-12 11:04:47

标签: php date strtotime

我有以下数据来自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']));

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

3 个答案:

答案 0 :(得分:2)

您可以这样使用:

 $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

答案 1 :(得分:2)

此处的问题是strtotime()无法识别您使用的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,这是星期六并且是正确的。

答案 2 :(得分:1)

查看以下代码:

$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