Magento自定义模块日期字段将日期保存到所选日期之前的一天 [英] Magento custom module date field saving date to one day before the selected date

查看:44
本文介绍了Magento自定义模块日期字段将日期保存到所选日期之前的一天的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我按照此链接上的步骤将日期字段添加到我的自定义模块中:

i followed steps on this link to add a date field to my custom module :

http://magentomechanic. blogspot.com/2010/01/to-add-custom-date-field-in-custom.html

一切都很好,除了当我选择一个日期并保存配置时,它会在所选日期的前一天将日期返回给我:(

Everything went fine, except for the that when i select a date and save configurations, it returns me date one day before the selected one :(

例如:

当我选择2012年2月25日并保存时,它将保存并返回2012年2月24日.

When i select 25 Feb, 2012 and save , it will save and return 24 Feb, 2012.

请注意,它是在一天前保存的:(

Notice it saved one day before :(

当我在保存之前在管理器中 print_r($ model)时得到此消息:

i get this when i print_r($model) in admin controller before save:

[start_date] => 2012-01-24 16:00:00 // i set it to 25 but its saving 24
[end_date] => 2012-01-26 16:00:00  // i set it to 27 but .....
[status] => 1 [content] => asdasdadsd  
[created_time] => 2012-01-25 07:27:11 // it gives current date and it is O'rite
[update_time] => 2012-01-25 07:27:11 ) //it gives current date and it is O'rite

注意:

我回显了发布日期,这是正确的,我的意思是发布数据没有问题, 意味着客户端很清楚是否有任何错误,因此问题出在哪里,就是当它转换为保存在数据库中时!!!任何帮助???

i echo the posted date and it was right what i set to mean there is no problem with the post data, mean client side is clear for any bug, so where the problem lies is when it is converted to save in database !!! Any help ???

这是我尝试的初始代码:

if($data['start_date'] != NULL )
                {
                $date = Mage::app()->getLocale()->date($data['start_date'], Zend_Date::DATE_SHORT);
                $model->setStartDate($date->toString('YYYY-MM-dd HH:mm:ss'));
                }
                if($data['end_date'] != NULL)
                {
                $date1 = Mage::app()->getLocale()->date($data['end_date'], Zend_Date::DATE_SHORT);
                $model->setEndDate($date1->toString('YYYY-MM-dd HH:mm:ss'));
                }

然后我尝试了这个:

echo $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT).'<br/>';
                if($data['start_date'] != NULL )
                {
                    echo $data['start_date']."<br/>"; // 01/27/12 correct date posted which i entered
                    $date = Mage::app()->getLocale()->date($data['start_date'], $format);
                    echo $date; /// Jan 26, 2012 4:00:00 PM but here we get back to one day
                    $time = $date->getTimestamp();
                    $model->setStartDate(Mage::getSingleton('core/date')->date(null, $time));

                    //$model->setStartDate($date->toString('YYYY-MM-dd HH:mm:ss'));
                }
                if($data['end_date'] != NULL)
                {
                    echo $data['end_date'].'<br/>';
                    $date1 = Mage::app()->getLocale()->date($data['end_date'], $format);

                    $time = $date1->getTimestamp();
                    $model->setEndDate(Mage::getSingleton('core/date')->date(null, $time));

                    //$model->setEndDate($date1->toString('YYYY-MM-dd HH:mm:ss'));
                }

$ format回显:M/d/yy 原始发布日期:01/27/12 $ date echo结果:2012年1月26日下午4:00:00

$format echoes : M/d/yy original posted date : 01/27/12 $date echo result :Jan 26, 2012 4:00:00 PM

推荐答案

发生了很多令人惊奇的事情!

Well amazing stuff happened !

我只是从管理员控制器中删除了保存日期字段的代码,一切顺利!

它自动将日期保存在数据库中.

It saved the date automatically in the DB.

这可能会帮助许多人并节省他们的时间,这与我不同,我将大部分时间都花在了上面.

This may help many and save them time unlike me, i spent most of the time on it.

这篇关于Magento自定义模块日期字段将日期保存到所选日期之前的一天的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆