我正在我的项目中进行一些日期转换,在开发环境中,代码按预期工作,但在生产环境中,它提供了有线结果。
在数据库中,当日期值为0000-00-00
时,就会发生这种情况。
代码
$db_pricedate = date('dmy', strtotime($row_country_price["pricedate"]));
Dev中的结果 - 010170
产品结果 - 3011-1
这真的很奇怪,代码和数据库完全相同。
任何建议。请帮忙 。提前谢谢
两台服务器都有PHP 5.3.3版
答案 0 :(得分:0)
可能来自本地配置?
尝试在date()
:set_local('LC_TIME', 'en');
答案 1 :(得分:0)
如果我没错?
您在Dev计算机上有 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)。
答案 2 :(得分:0)
这是因为您的产品的时区不同。服务器&开发服务器。您可以通过更改dev server / mysql服务器时区来解决此问题。
要查看你的mysql服务器tiemzone试试这个(假设你使用的是mysql)
SELECT @@system_time_zone;
如果在更改mysql服务器时区时出现问题,您可以在脚本中更改时区。
如果问题仍未解决,请使用以下
$date = DateTime::createFromFormat("Y-d-m", "0000-00-00");
echo $date->format("dmy");
它必须在dev& amp;具有相同结果的prod服务器(已测试)。保证
由于
答案 3 :(得分:-1)
PHP date()convert 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"];
}