今天我得到了一个用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
类使用相同的库,这将需要/尊重此设置。