gpt4 book ai didi

magento-1.4 - Magento自定义模块日期字段保存日期到所选日期前一天

转载 作者:行者123 更新时间:2023-12-05 09:24:48 24 4
gpt4 key购买 nike

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

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

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

例如:

当我选择 25 Feb, 2012 并保存时,它将保存并返回 24 Feb, 2012。

注意它在一天前保存了 :(

我在保存前在管理 Controller 中 print_r($model) 时得到这个:

[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

注意:

我回应了发布日期,我设置的是正确的,意味着发布数据没有问题,意味着客户端对于任何错误都是明确的,所以问题出在它被转换为保存在数据库中时!有什么帮助吗???

这是我尝试过的初始代码:

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 回显结果:2012 年 1 月 26 日下午 4:00:00

最佳答案

我在浏览有关 Magento 日期的类似问题时偶然发现了这篇文章。不幸的是,这些答案对我没有帮助,但我回来分享一些关于约会的事情,希望对其他人有用。

首先,Magento 以 UTC 时区将日期存储在数据库中。这样,它需要相同的代码和相同的逻辑来为英国、美国或澳大利亚的客户显示信息。仔细检查,它保存的不是“一天前”,而是 8 小时前(2012 年 1 月 25 日 00:00:00 => 2012-01-26 16:00:00)。

第二件重要的事情:Magento 为数据库字段提供了标准的动态生成的 getter 和 setter。因此,如果您已将自定义字段添加到 Product 或 Customer,则无需定义自己的方法来读取/写入数据库。您的类,例如:class MyOrg_MyModule_Model_Customer extends Mage_Customer_Model_Customer 将具有方法 $this->getStart_date()$this->setStart_date($datetime) 即使是您的自定义字段。您还可以使用方法 $this-setData('start_date', $datetime); 然后使用 $this->save();

此信息将帮助您了解标准 Magento 函数需要哪些时区参数:

$current_datetime_utc_in_timestamp_format = time();

$start_datetime_utc_in_text_format = $this->getStart_date();
$start_datetime_utc_in_timestamp_format = Varien_Date::toTimestamp($start_datetime_utc_in_text_format);

//check Mage/Core/Model/Date.php
// timestamp() adds TimeZone to datetime, see also gmtTimestamp() – it deducts TimeZone from datetime
$start_datetime_local_in_timestamp_format = Mage::getModel('core/date')->timestamp($start_datetime_utc_in_text_format) );
//Timestamp() also accepts parameter in timestamp format
$start_datetime_local_in_timestamp_format = Mage::getModel('core/date')->timestamp($current_datetime_utc_in_timestamp_format) );

$displayTime = true;
$start_datetime_local_in_text_format = Mage::helper('core')->formatDate($start_datetime_utc_in_text_format, 'medium', $displayTime);
//or
$start_datetime_local_in_text_format = Mage::getModel('core/date')->date("Y-m-d H:i:s", $start_datetime_utc_in_timestamp_format);

$start_datetime_utc_in_text_format = Mage::getModel('core/date')->gmtdate("Y-m-d H:i:s", $start_datetime_local_in_timestamp_format);
//similar to timestamp()/gmtTimestamp(), date() – adds TimeZone and gmtDate() – deducts TimeZone from time

$this->setStart_date( $start_datetime_utc_in_timestamp_format );

为了简单和快速,我建议您使用时间戳来进行日期计算和比较。并仅在您的时区转换时间以显示它。

关于magento-1.4 - Magento自定义模块日期字段保存日期到所选日期前一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8998797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com