使用php 5.4.34和 Laravel 4 与apache 2.2.22和Ubuntu。
我尝试将字符串'2050-10-13'
转换为日期,并且始终返回false。
var_dump(strtotime('2050-10-13')); ==> false
var_dump(strtotime('13-10-2050')); ==> false
var_dump(strtotime('2050/10/13')); ==> false
var_dump(strtotime('13/10/2050')); ==> false
我之前尝试过添加:
date_default_timezone_set('Europe/Brussels');
OR
date_default_timezone_set('Europe/Paris');
我没有改变任何事情。
在app/config/app.php
我有:
'timezone' => 'UTC',
'locale' => 'en',
可能是什么问题?
答案 0 :(得分:4)
2050
无法在32位系统内部表示
时间戳限制为2038,因为32位整数的最大值为2,147,483,647
,即:2038-01-19T03:14:08+0000Z
您刚刚遇到了year2038
错误。
不要使用时间戳。而是使用更强大的库,例如new \DateTime('2050-10-13');
,当然还有数据库使用Date
字段。
答案 1 :(得分:2)
问题是你使用的功能在32位系统上将来无法应对日期。
使用DateTime代替它会非常愉快地处理这些日期: -
$date = new \DateTime('2050-10-13');
var_dump($date);
答案 2 :(得分:1)
在动态答案中添加答案。时间戳限制为2038,因为32位整数的最大值为2,147,483,647。如果你添加+1,你得到-2,147,483,647。从01-01-1970 00:00:00开始的2,147,483,647秒是2038年1月19日。如果再加一秒,你会在1902年的某个地方得到一个日期。
这次运气不好。