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

时间:2012-04-05 14:22:49

标签: php datetime date timezone

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

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

错误信息是:

  

致命错误:带有消息的未捕获异常'异常'   'DateTime :: __ construct()无法解析时间字符串(2 dez 2011   16:00)位置0(2):意外字符'in   C:\ www \ fluxo_producao \ Telas \ TelaFluxoProducao.php:941堆栈跟踪:#0   C:\ WWW \ fluxo_producao \ TELAS \ TelaFluxoProducao.php(941):   DateTime-> __ construct('2 dez 2011 16:0 ...')#1 {main}引入   941行的C:\ www \ fluxo_producao \ Telas \ TelaFluxoProducao.php

我自己发现的是,如果我手动将参数更改为“2006年12月12日”,则该功能有效。但变量传递的日期是“12 Dez 2006”(巴西格式,顺便说一句,我是巴西人^ _ ^),我发现服务器中的默认时区是“America / Sao_Paulo”......我需要更改函数或参数以使其转换指定的格式?

2 个答案:

答案 0 :(得分:1)

它需要在末尾有一个结束的花括号吗?

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

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

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

它只会接受英文月份值,例如,Dec会有效,但Dez则不会。

答案 1 :(得分:0)

确认您已将服务器设置为正确的时间区域:

setlocale(LC_TIME, 'pt_BR');

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