2014-10-09 39 views
-1

当我在WAMP上运行这个时,当我相信我应该得到“星期五”时,我得到“星期三”。鉴于明天是2014年10月10日星期五和10日,我有理由相信它应该是星期五。 :-DPHP日期函数生成错误的星期几?

 $start_day = date("D","2014-10-10"); 
     echo $start_day; 

必须失去了一些东西明显。我从来没有遇到日期函数的问题。

预先感谢您的宝贵意见。

+0

这也发生我的虚拟主机上,让我比以往任何时候,我失去了一些东西明显更担心。 – irthinker 2014-10-09 20:46:02

+0

'date'不包含字符串。它需要一个时间戳。 – vch 2014-10-09 20:48:23

+1

是的,我现在感觉很蠢,但是我已经达到了一个我完全无视错误的地步。可能太少咖啡因/睡眠。 – irthinker 2014-10-09 21:36:00

回答

2

日期函数的第二个参数是代表数的整数自unix时代(1-1-1970)开始以来的秒数,而不是一些自由形式的日期字符串。所以,真的,你问的是一周中的哪一天是在1-1-1970之后的2014年。

你一定想先使用stringtotime:

$start_day = date("D",strtotime("2014-10-10")); 
echo $start_day; 
+0

感谢您的帮助。自从我构造了一个日期时间参数(大约18个月)后,我一直在玩弄Date :: Time结构,以便在返回到此方法之前从字符串中获取它。 – irthinker 2014-10-09 20:55:09

3

timestamp的参数should be a Unix timestamp (integer),而不是字符串:

timestamp

可选的时间戳参数是一个整数Unix时间戳,如果时间戳没有给出默认为当前本地时间。换句话说,它默认为time()的值。

您可以使用strtotime将字符串转换为合适的时间戳。

+0

谢谢你的回复。 – irthinker 2014-10-09 20:56:29

+0

克里斯,我只是在等待时间倒下。再次感谢! – irthinker 2014-10-09 21:34:38

2

RTM:http://php.net/date

日期()需要使用时间戳作为其第二个参数。你正在传递一个随机字符串。由于它是一个字符串,它会尝试将该数字编号转换为一个字符串,并最终以“数字”结束。

所以你真的做

date('D', 2010); 

对应于(大约)一月1,1970上午十二时50分00秒

+0

谢谢。我向你保证我读过文档。我现在正处于一种混乱的状态,而且日期时间操纵很生疏。 – irthinker 2014-10-09 20:56:05