から Mage/CatalogRule/Model/Resource/Rule.php
/**
* Inserts rule data into catalogrule/rule_product table
*
* @param Mage_CatalogRule_Model_Rule $rule
* @param array $websiteIds
* @param array $productIds
*/
public function insertRuleData(Mage_CatalogRule_Model_Rule $rule, array $websiteIds, array $productIds = array())
{
/** @var $write Varien_Db_Adapter_Interface */
$write = $this->_getWriteAdapter();
$customerGroupIds = $rule->getCustomerGroupIds();
$fromTime = (int) strtotime($rule->getFromDate());
$toTime = (int) strtotime($rule->getToDate());
$toTime = $toTime ? ($toTime + self::SECONDS_IN_DAY - 1) : 0;
/** @var Mage_Core_Model_Date $coreDate */
$coreDate = $this->_factory->getModel('core/date');
$timestamp = $coreDate->gmtTimestamp('Today');
if ($fromTime > $timestamp
|| ($toTime && $toTime < $timestamp)
) {
return;
}
これまでの日付と日付を同じにすると、これまでのところすべてが正常に見えます。終了日は、日付+ 1日の秒数-1なので、その日の終わりになります。
タイムゾーンの設定が競合しているため、コアの日付が正しくない可能性があります。
テストスクリプトを使用してテストし、一部のデータをエコーできます。
include('app/Mage.php');
Mage::app('admin');
echo date('Ymd His', Mage::getModel('core/date')->gmtTimestamp('today'));
または、insertRuleData
手動で呼び出して、テスト用のリソースファイルにデバッグデータを追加します。
$ruleId = 1; // Your rule id here
/** @var $rule Mage_CatalogRule_Model_Rule */
$rule = Mage::getModel('catalogrule/rule')->load($ruleId);
/** @var $resource Mage_CatalogRule_Model_Resource_Rule */
$resource = Mage::getResourceModel('catalogrule/rule');
$resource->insertRuleData($rule, array_keys(Mage::app()->getWebsites(true)));