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

PHP中日期返回的星期几错误,php,date,strtotime,Php,Date,Strtotime,我从date\u 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,这是星期四的代码,而那天

我从
date\u 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
。我还尝试使用
strotime
对元素重新排序,认为这可能与我的时区设置有关,但结果仍然是
4

您可以这样使用:

 $d = $date_array;
 date("w", mktime(0, 0, 0, $d['month'], $d['day'], $d['year']));
我使用
mktime()
,因为它可以完美地工作,因为您将获得正确的时间戳。此代码打印
6
,这是正确的日期

请注意,由于PHP5.1.0,您可以使用
L
参数以更符合逻辑的方式获取从1(星期一)到7(星期日)的天数

 date("L", mktime(0, 0, 0, $d['month'], $d['day'], $d['year']));
更多信息:

您可以通过以下方式使用:

 $d = $date_array;
 date("w", mktime(0, 0, 0, $d['month'], $d['day'], $d['year']));
我使用
mktime()
,因为它可以完美地工作,因为您将获得正确的时间戳。此代码打印
6
,这是正确的日期

请注意,由于PHP5.1.0,您可以使用
L
参数以更符合逻辑的方式获取从1(星期一)到7(星期日)的天数

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

更多信息:

查看以下代码:

$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

有关格式的更多详细信息,请访问以下代码:

$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
有关格式的更多详细信息,请访问这里的问题是无法识别您使用的
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
,这是星期六,是正确的。

这里的问题是无法识别您使用的
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
,这是周六,是正确的。

值得一看支持的
strotime
。2015年4月25日是周六…@JanChimiak是的,我会更新这个问题。有趣的是,一些在线日历弄错了。。。比较一下,我实际上仔细检查了我的挂历…@JanChimiak不,他们都是对的,只是其中一个星期天开始,另一个星期一开始:)值得一看受支持的strotime
strotime
。2015年4月25日是星期六…@JanChimiak是的,对xD我会更新这个问题。有趣的是,一些在线日历弄错了。。。比较一下,我实际上仔细检查了我的挂历…@JanChimiak不,他们都是对的,只是其中一个星期天开始,另一个星期一开始:)我决定接受这个答案,因为它也解释了为什么事情不起作用。其他答案也都投了赞成票。好的,但我推荐
mktime()
,因为你避免了这种错误(这是我的解释),我决定接受这个答案,因为它也解释了事情不起作用的原因。其他答案也都投了赞成票。好的,但我推荐
mktime()
,因为这样可以避免此类错误(这是我的解释)