我正在使用php和zend框架创建一个Web应用程序,并尝试使用此代码向数据库插入一个新行:
class PriceWatcher_PriceTable extends Zend_Db_Table_Abstract {
protected $_name = 'price_watcher_price';
public function newPrice($data)
{
$data['tme']=Zend_Date::now();
$this->insert($data);
}}
我的数据库中的列名为tme
,格式为datetime
。当我在服务器上上传这段代码时,它可以很好地工作但是当尝试在本地运行时它存储
0000-00-00 00:00:00
我检查了mysql日志查询并找到了这个查询:
UPDATE
price_watcher_price
SETtme
='2014-48-30 10:48:42'WHERE(id
='40')
仔细查看查询,您可以看到它在日期字符串中发送minute
而不是month
,而mysql拒绝它。
而更奇怪的是,当我echo
时,我得到了这个:
2014年1月30日上午11:07:08
这里的月份还可以。重要的是我的服务器是linux,本地系统是windows。 问题在哪里?
答案 0 :(得分:0)
我找到了自己的答案。在Bootstrap.php
下面添加代码添加代码_init_Loader_Autoloader
:
date_default_timezone_set ( 'Asia/Tehran' );
$locale = new Zend_Locale ( 'fa_IR' );
Zend_Registry::set ( 'Zend_Locale', $locale );
如果您没有该功能,请创建它并将代码放入其中。将Asia/Tehran
和fa_IR
更改为您自己的时区。在我的情况下,我必须使用它们。
您可以看到php时区列表here。
您可以看到zend_locales here的列表。
感谢您的帮助。