2012-09-30 13 views
6

index.phpに日付/時刻を出力する場合はecho date('m/d/Y h:i:s a', time());です。あたりです。それ以降の日付/時刻を出力した場合、たとえば拡張機能では、正確に4時間は消えてしまいます。私はphp.iniとMagento自体でタイムゾーンを適切に設定していますので、何が原因かわかりません。私はバージョン1.7.0.2を実行しています。Magentoが誤った日付と時刻を出力する

EDIT

[OK]をので、私はいくつかのことを学びました。 Magentoのは、いつも アプリ/ mage.phpにUTCに

line 767: date_default_timezone_set('UTC') 

をタイムゾーンを設定します

、基本的には(日付を使用することはできません)、時間()などあなたには、あなたのターゲッティングのタイムゾーンを設定する必要があります管理 - >システム - >設定/一般 - >ロケールオプションと同じようなものを使用します。

$now = Mage::getModel('core/date')->timestamp(time()); 
echo date('m/d/y h:i:s', $now); 

私はいつも私のタイムゾーンとライン767を置き換えることができますが、私はコアコードを変更する好きではありません。そこに他のオプションはありますか?

答えて

7

Magentoのに好ましい方法は、this exampleのように代わりにスカラー値のZendのまたはVarienいずれかの日付時刻オブジェクトを使用しているように見えます。オブジェクトを取得したら、setTimezoneコールを使用して、オブジェクトをサーバー以外の他のタイムゾーンに簡単に変換できます。

// a more complete example 
$datetime = Zend_Date::now(); 
// admin controls this output through configuration 
$datetime->setLocale(Mage::getStoreConfig(
      Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE)) 
     ->setTimezone(Mage::getStoreConfig(
      Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE)); 
echo $datetime->get(Zend_Date::DATETIME_SHORT); 
+0

upvote私から...... –

4

Magentoのデータベースに日付を保存する場合は、それらがUTCであることを確認してください。デフォルトでは、Magentoはすべての日付をUTCとして保存しますが、ローカルタイムゾーンに表示するはずです。

0

私の場合、時間は、 system.logだけでなくスケジューラ(cronjobs)にもあります。

それでは、それは今01.15リアルタイムで言わせて、スケジューラで作成された時は常に正しいので、この場合は01.15。実行時間よりも時々01.16ですが02.16であるため、01.16と02.16が混在しているので、時間は連続的に変化します。

私は、システムログを確認すると、私が最初にあなたが時間が再び01.50、02.45、03.50、突然02.55のようなメッセージに対してインクリメント参照、同じを参照してください。

このようにシステムの中には何かがありますが、私のプロバイダは何かを見つけるかもしれませんが、システム時間ではありません。Magentoはログに書き込みます。 。

EDIT:この問題があるのはなぜ

私は知らないが、私は私のゾーンヨーロッパ/アムステルダムでMage.phpでUTC時刻を変更しました。現在、すべての時間が正確であり、ログにも記録されています。再び

しかし、一つ問題が、私は(スケジューラ内の他の時間が正確である)、このジョブは1時間後に予定されているスケジューラ(拡張子)で、すぐにcronジョブをスケジュールします。拡張Copernicaは、例えば、 18.00(ないスケジューラ経由)、それが17.00で最後に実行される...他の非Magentoのwebshopsは、問題のこの種を持っていない書き込み..データベースはまた、php.iniでヨーロッパ/アムステルダムを使用します。..

関連する問題