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');
正如Matt所指出的那樣,R::isoDateTime()
只是一種便利功能。
在我檢查了紅豆的所有版本(3.x中,4.x版),它被定義爲:
@date('Y-m-d H:i:s', $time)`
即:沒有任何時區信息時間戳。例如:2017-09-05 18:49:16。
下的MySQL:
您可能正在使用datetime
無任何時區信息,並R::isoDateTime()
會做得很好。
但使用的是Postgres時要注意:
Postgres將理解這種時候,沒有一個時區,隨着時代的Postgres的時區,這樣,即使你設置使用紅豆的時間(不是PHP的!) ,你可能會發現日期並不是你期望的那樣。
這應有助於:
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