在apache 2.2.22和ubuntu中使用php 5.4.34和laravel 4。
我试图将字符串'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');


date_default_timezone_set('Europe/Paris');

我什么也没改变。
app/config/app.php中,我有:
'timezone' => 'UTC',
'locale' => 'en',

有什么问题吗??

最佳答案

2050不能在32位系统内部表示。
时间戳限制为2038,因为32位整数的最大值为2,147,483,647,即:2038-01-19T03:14:08+0000Z
您刚刚经历了year2038错误。
如何修复
不要使用时间戳。取而代之的是使用一个更健壮的库,比如new \DateTime('2050-10-13');,当然在数据库中使用Date字段。

09-12 06:52