ドキュメントによると JFactory/getDate$tzOffset
デフォルト値は0
。ただし、次の例:
$date_default_offset = JFactory::getDate('now');
echo $date_default_offset->toRFC822(true);
echo "<br />";
$date_zero_offset = JFactory::getDate('now', 0);
echo $date_zero_offset->toRFC822(true);
...異なる出力を提供します:
Mon, 13 Oct 2014 18:31:37 +0000
Mon, 13 Oct 2014 19:31:41 +0100
両方の日付が同じであるべきではありませんか?他に何を考慮すべきですか?
実際の日付は次のとおりです。
echo date("r"); // Mon, 13 Oct 2014 20:40:33 +0200
サーバーがスペインにあるため、正解です(+1 GMTおよび+1夏時間の夏時間)。
カナリア諸島の現在の時刻を考慮してモジュールを調整しようとすると問題が発生しました。これはMon, 13 Oct 2014 19:31:41 +0100
与えられた例に従って。
私はJoomlaを使用しています! 2.5.27、サーバーのタイムゾーンはカナリア(GMT + 0)に設定されています。
ファイル_/libraries/joomla/factory.php
_を開き、getDate()
関数を検索します。
_public static function getDate($time = 'now', $tzOffset = null)
_
タイムゾーンオフセットのデフォルト値(_$tzOffset
_)はnull
であり、_0
_ではありません。 Joomlaドキュメント の誤りが原因であるか、2.5より古いバージョンが原因です。
Joomla 3では、$date_zero_offset = JFactory::getDate('now', 0);
はエラーを発生させます:
DateTime :: __ construct()は、パラメーター2がDateTimeZoneであると想定し、整数を指定します
したがって、カナリア諸島では、これを使用できます。
_$date_zero_offset = JFactory::getDate('now', 'Atlantic/Canary');
_
次のように、グローバル構成からオフセットを取得することをお勧めします。
$date = JFactory::getDate($input='now', 'UTC');
$tz = JFactory::getConfig()->getValue('config.offset');
$date->setOffset($tz);
echo $date->toFormat();
生活を少し簡単にし、コードを減らすには、JHtml::date
の使用をお勧めします
echo JHtml::date($input = 'now', 'm/d/Y', false);
お役に立てれば
Joomlaで日付を正しく取得できませんでした! v.3.9.14、これが私の(証明済み)ソリューションです:
$oUser_TZ = JFactory::getUser()->getTimezone();
$aUser_tz = (array)$oUser_TZ; // almost sure this step is not that necessary
$full_date = JFactory::getDate('now', $aUser_tz['timezone']); // pretty sure $oUser_tz->timezone will work
// I had try to use $full_date->Format('Y-m-d H:i:s') but it was giving me the non-converted-to-wanted-timezone date, so
$date_converted = substr($full_date, 0, 19);
$date_converted
は、日付をY-m-d H:i:s
の形式で、希望するタイムゾーンで示します。