PHP mktime突然过去了吗?

时间:2015-08-01 15:47:55

标签: php mktime

我有一个包含这一行的脚本:

$showdate = mktime(18, 59, 0, 08, 02, 2015);

应该将变量设置为1438556340(日期为2015年8月2日下午6:59)

但是,由于一些疯狂的原因,截至今天上午,它将变量设置为1417564740(2014年12月2日)。

脚本在几周之内没有任何改变。为什么突然改变?有没有办法解决它?

谢谢!

2 个答案:

答案 0 :(得分:0)

正如Sami Kuhmonen在问题的第一条评论中指出的那样,当你的意思是8(十进制)时,你不应该使用08(invalid octal literal)。

<?php
echo mktime(18, 59, 0, 08, 02, 2015), "\r\n";
echo mktime(18, 59, 0, 8, 2, 2015), "\r\n";

echo 8, "\r\n";
echo 08, "\r\n";

打印

1417543140
1438534740
8
0

答案 1 :(得分:0)

08被解析为八进制数

  

要使用八进制表示法,请在数字前面加上0(零)。

08并不是八进制,所以返回0

  

八进制:0 [0-7] +

mktime在文档中有以下内容

  

month相对于上一个月末的月份数   年。值1到12表示一年中的正常日历月   有问题。小于1的值(包括负值)参考   上一年的月份是相反的顺序,所以0是12月,-1   是11月等。大于12的值参考相应的   次年的月份。

因此它去年12月

http://php.net/manual/en/language.types.integer.php

http://php.net/manual/en/function.mktime.php