2017-05-04 6 views

答えて

1

the source codeのように、R::isoDateTime()は便利な方法です。単にPHP time()関数を呼び出し、結果をdate関数を使用して文字列としてフォーマットします。

私はそれをテストしませんでしたが、理論的にはdate_default_timezone_set関数が機能するはずです。例:

date_default_timezone_set('America/Los_Angeles'); 
+0

はい。私はdate_default_timezone_setを使用しました – GRowing

0

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;

  • はPostgresののデフォルトのタイムゾーンを確認するには。
  • Postgresのデフォルトのタイムゾーンを変更するにはロール(ユーザ):ALTER ROLE myuser SET timezone = 'Europe/Paris';
  • Postgresのデフォルトのタイムゾーンを安全に設定することをお勧めします。ただし、時間を使って作業する場合は、明示的にタイムゾーンを指定することをお勧めします。これにより、特定のタイムゾーンにいることを意図したときに、偶然にUTCと解釈されることを避けることができます。したがって、タイムゾーンレスの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を愛していますが、これはどこでもカバーされているのを見たことがありません)。

関連する問題