php date strtotime wrong unix tuimestamp


php date strtotime wrong unix tuimestamp

我试图使用php检查时间戳。但是,$date变量会回显时间戳1382389873我用 unix 转换器检查 epochconverter.com 它显示星期一, 21 十月 2013 21:11:13 GMT, 当它应该是 5 十一月 2013.任何人都可以看到下面的代码并指出我的错误吗?谢谢。

$today = strtotime(date("d.m.y"));
        $c_date = strtotime($CI->session->userdata('c_date'));
        $early = strtotime(date("d.m.y")."+2 week");
        $date = strtotime("5.11.13");
        echo'<br/>';
        echo 'test'.$date;
        echo'<br/>';
        echo 'collection'.$c_date;
        echo'<br/>';
        echo 'early'.$early;
        echo'<br/>';
        echo 'today '.$today;
        echo'<br/>';

strtotime在处理日期的方式上非常模糊。它将"5.11.13"解释为今天下午 5:11:13(即 24 小时制的 21:11:13)。

如果要指定 11 月 5 日,则应这样做:

$date = strtotime("11/5/13");
echo $date;
echo date("m/d/Y", $date);

输出:

1383609600
11/05/2013

其他人在我之前回答了这个问题,但这是我的测试和笔记,以补充对话......strtotime() 将字符串转换为时间整数。 date() 将整数转换为(可选格式化)字符串。 我想说你总是可以使用它而不是 epochvonverter.com......但现在我明白你为什么去那里了。 另请注意,手册是这样说的:

"注:m/d/y 或 d-m-y 格式的日期通过查看各组成部分之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美国 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式。为了避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。 -http://www.php.net/manual/en/function.strtotime.php(顺便说一句,该页面上有更多古怪的东西)。

非常有趣的是,这个带有点的例子不是产生 d.m.y,而是产生 h.m.s! 我想这是因为我们正在与strtoTIME合作,而不是...呃。。斯特托日期 :)

考虑一下:

$integer = 1382389873;
var_dump($integer);
echo "<br>";
//int(1382389873) 
$string = date($integer);
var_dump($string);
echo "<br>";
//string(10) "1382389873" 
$formatted=date('d.m.y',$integer);
$laterint=strtotime($formatted."+2 week");
var_dump($laterint);
echo "<br>";
// int(1383682213)
$laterstring=date('d.m.y',$laterint);
var_dump($laterstring);
echo "<br>";
// string(8) "05.11.13" 

这是多汁的部分:

$date1 = strtotime("5.11.13");
var_dump($date1);
echo "<br>";
$datestring1=date('d.m.y',$date1);
var_dump($datestring1);
    //BAD PHP, BAD!
echo "<br>";
$date2 = strtotime("5.11.2013");
var_dump($date2);
echo "<br>";
$datestring2=date('d.m.y',$date2);
var_dump($datestring2);
echo "<br>";
$date3 = strtotime("5/11/13");
var_dump($date3);
echo "<br>";
$datestring3=date('d.m.y',$date3);
var_dump($datestring3);
echo "<br>";

真的很有趣的东西,伙计们 - 谢谢大家! 对我来说,这个故事的寓意是始终明确 4 位数的年份。

我为您进行了几次测试,似乎您需要以 YYYY 格式输入您的年份,例如 2013 年:

$date = strtotime("5.11.2013"); // your code
echo $date . "'n";
echo date('d-m-Y', $date);
// timestamp: 1383562800
// converted to date: 05-11-2013
-

-edit-- 正如我在之前的评论中提到的,如果$date应该与$early相同,您为什么还要费心手动重新分配它?为什么不直接使用$early