今天我有一个用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”......我需要更改函数或参数以使其转换指定的格式?
答案 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
类使用相同的库,这将需要/尊重此设置。