2015-04-24 56 views
0

我正在使用我的项目中的某些日期转换,在开发环境中代码按预期工作,但在生产环境中它提供了有线结果。使用日期和时间的奇怪结果PHP

在数据库中日期值为0000-00-00时会发生这种情况。

代码

$db_pricedate = date('dmy', strtotime($row_country_price["pricedate"])); 

结果在开发 - 010170

结果正式版 - 3011-1

这实在是不可思议,代码和数据库是相同的。

有任何建议。请帮忙 。在此先感谢

两台服务器均PHP版本5.3.3

+1

您是否有权访问php.ini文件?这通常是由php.ini文件中的时区之间的差异造成的。 – Blaatpraat

+1

如果它不是时区差异,您是否尝试过使用$ db_pricedate = DateTime :: createFromFormat('dmy',$ row_country_price [“pricingate”]); – Rooneyl

回答

0

这可能是从本地的配置?

试图将date()前补充一点:set_local('LC_TIME', 'en');

-1

PHP日期()转换成0000-00-00尝试01011970这个

if($row_country_price["pricedate"]!= "0000-00-00"){ 
    $db_pricedate = date('dmy', strtotime($row_country_price["pricedate"])); 
}else{ 
    $db_pricedate = $row_country_price["pricedate"]; 
} 
0

如果我没看错

你是在开发机器上具有32位系统,在生产服务器上具有64位系统。

你越来越怪异的结果的原因是

strtotime("0000-00-00 00:00:00"); 

返回

int(-62170005200) // on 64 bit system 
false // on 32 bit system 

这使得进一步的操作不同。

:只应用于PHP> = 5.3,我没有检查PHP 5.2 + 64位系统(它返回false AFAIK)。

0

这是因为你的产品中有不同的时区。服务器& dev服务器。你可以通过改变你的dev服务器/ mysql服务器时区来解决这个问题。

要查看你的MySQL服务器tiemzone试试这个(假设你正在使用MySQL)

SELECT @@system_time_zone; 

如果在改变MySQL服务器时区有问题,你可以在脚本中更改时区。

如果问题仍没有解决使用后

$date = DateTime::createFromFormat("Y-d-m", "0000-00-00"); 
echo $date->format("dmy"); 

它必须在相同的结果都开发&督促服务器工作(测试)。担保

谢谢