RedBeanPHP ORMに日付を指定する便利な機能があります。RedBeanPHP - R :: isoDateTime() - タイムゾーンの設定方法は?
$time = R::isoDateTime();
タイムゾーンを設定するにはどうすればよいですか?
デフォルト機能では、RBが実行されているマシンの時刻は返されません。
RedBeanPHP ORMに日付を指定する便利な機能があります。RedBeanPHP - R :: isoDateTime() - タイムゾーンの設定方法は?
$time = R::isoDateTime();
タイムゾーンを設定するにはどうすればよいですか?
デフォルト機能では、RBが実行されているマシンの時刻は返されません。
the source codeのように、R::isoDateTime()
は便利な方法です。単にPHP time()
関数を呼び出し、結果をdate
関数を使用して文字列としてフォーマットします。
私はそれをテストしませんでしたが、理論的にはdate_default_timezone_set
関数が機能するはずです。例:
date_default_timezone_set('America/Los_Angeles');
R::isoDateTime()
は単なる便利な機能です。
@date('Y-m-d H:i:s', $time)`
すなわち:任意のタイムゾーン情報なしのタイムスタンプ:私がチェックしたRedBeanのすべてのバージョン(3.xの、4.xの)で
が、それは次のように定義されます。例:2017-09-05 18:49:16 MySQLの下で:
おそらく、任意のタイムゾーン情報なしdatetime
を使用している、とR::isoDateTime()
はうまくやるだろう。
しかし、Postgresのを使用する場合に注意を払う:
Postgresは(ないPHPの!)Postgresのタイムゾーンの時刻と、タイムゾーンなしで、そのような時代を理解するので、あなたがRedBeanを使用して時刻を設定していてもあなたが期待していた日付ではないことがわかるかもしれません。
これは役立つはず:SHOW timezone;
:
ALTER ROLE myuser SET timezone = 'Europe/Paris';
。R::isoDateTime()
の代わりに@date('c')
のようなものを使用したいと思うかもしれません。例:2017-09-05T18:49:16 + 02:00 そして最後に心のPostgresに保つには、UTCとして、すべてを保存しますが、/その現在設定されているtimezone
設定に基づいて、タイムゾーンの様々な、でそのtimestamp without a time zone
タイプ(AKA timestamptz
)が表示されますすることができます。例えば:2017-09-05T18:ヨーロッパ/パリが設定されている場合は49:16 + 02:00、UTCが設定されている場合は2017-09-05T16:49:16 + 00:00(両方とも同じ時刻を参照)
(私はRedBeanを愛していますが、これはどこでもカバーされているのを見たことがありません)。
はい。私はdate_default_timezone_setを使用しました – GRowing