1

Magento テンプレートで、製品属性として保存されている日付を選択しています。それが構成(セットアップリソース)です:

# Attribute default config - every property can be overridden
$defaultAttributeConfig = array(
    'input'                     => 'date',
    'type'                      => 'datetime',
    'backend'                   => 'eav/entity_attribute_backend_datetime',
    'frontend'                  => 'eav/entity_attribute_frontend_datetime',
    'visible'                   => true,
    'visible_on_front'          => false,
    'required'                  => false,
    'user_defined'              => false,
    'used_in_product_listing'   => true,
    'group'                     => $defaultAttributeGroup,
    'global'                    => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'apply_to'                  => 'bundle,simple,configurable',
    # Other
    'default'                    => null,
    'source'                     => null,
    'searchable'                 => false,
    'visible_in_advanced_search' => false,
    'filterable'                 => false,
    'filterable_in_search'       => false,
    'comparable'                 => false,
    'is_html_allowed_on_front'   => true,
    'is_configurable'            => false,
    'used_for_sort_by'           => false,
    'position'                   => 0,
    'used_for_promo_rules'       => false,
);

$installer->addAttribute(
    $productEntityTypeId,
    'time_lapse_begin',
    array_merge($defaultAttributeConfig, array(
        'label'     => 'Time-lapse begin',
        'sort'      => 10,
    ))
);

私のテンプレートファイルでは、次のようにデバッグ目的で日付を処理しています:

<?php list($timeLapseBegin, $timeLapseEnd) = array($_product->getTimeLapseBegin(), $_product->getTimeLapseEnd()); ?>

<?php if ($this->validateDate($timeLapseBegin)): ?>

<p>
    Origin Date <?php echo $timeLapseBegin ?><br />
    Full Date: <?php echo Mage::helper('core')->formatDate($timeLapseBegin, 'full'); ?><br />
    Long Date: <?php echo Mage::helper('core')->formatDate($timeLapseBegin, 'long'); ?><br />
    Medium Date: <?php echo Mage::helper('core')->formatDate($timeLapseBegin, 'medium'); ?><br />
    Short Date: <?php echo Mage::helper('core')->formatDate($timeLapseBegin, 'short'); ?>
</p>

<?php endif; ?>

残念ながら、出力は期待どおりではありません。

Origin Date 2013-01-01 00:00:00
Full Date: Montag, 31. Dezember 2012
Long Date: 31. Dezember 2012
Medium Date: 31.12.2012
Short Date: 31.12.12

ご覧のとおり、Origin Date は 2013/01/01 になっていますが、Magento のヘルパーはそれを 2012/12/31 にフォーマットしています。これは前日であり、予期されていません...

ヘルプやヒントをいただければ幸いです。前もって感謝します!

4

1 に答える 1

0
Mage::app()->getLocale()->date($data['start_date'], Zend_Date::DATE_SHORT, null, false);

「useTimezone」を False に設定します

日付を選択した日付の 1 日前に保存する Magento カスタム モジュールの日付フィールドを参照してください。

于 2013-05-05T01:40:01.953 に答える