尝试在PHP中创建对象DateTime时出错


Error when trying to create an object DateTime in PHP

今天我得到了一个用PHP编写的项目。当我试图在表数据集中显示日期时出错。这是生成错误的语句:

$data = new DateTime($registro["previsao de entrega"];

错误消息如下:

致命错误:未捕获异常"exception",消息为'DateTime::__construct()无法分析时间字符串(2 dez 201116:00)在位置0(2):中出现意外字符"C: ''www''fluxo_producao''Telas''TelaFluxoProducao.php:941堆栈跟踪:#0C: ''www''fluxo_producao''Telas''TelaFluxoProducao.php(941):DateTime->__construct('2 dez 2011 16:0…')抛出#1{main}C: ''www''fluxo_producao''Telas''TelaFluxoProducao.php,941 线上

我自己发现,例如,如果我手动将参数更改为"2006年12月12日",该函数就会工作。但变量经过的日期是"12 Dez 2006"(顺便说一句,巴西格式,我是巴西人^_^),我也发现服务器中的默认时区是"America/Sao_Paulo"。。。要使函数或参数转换为指定的格式,我必须更改什么?

它的末尾需要一个闭合的花括号吗?

$data = new DateTime($registro["previsao de entrega"]);

如果这只是一个拼写错误,可能是$registro["previsao de entrega"]的值不正确,是什么?

您可以在此处查看允许的值格式:http://www.php.net/manual/en/datetime.formats.date.php

它只接受英文月份值,例如Dec可以工作,但Dez不能。

验证您是否已将服务器设置为正确的时间区域设置:

setlocale(LC_TIME, 'pt_BR');

这对于strftime()和AFAIK是必需的,所有与日期/时间相关的函数和DateTime类使用相同的库,这将需要/尊重此设置。