RedBeanPHP ORM中有一个便利函数用于停止日期。
$time = R::isoDateTime();
如何设置时区?
默认功能不会返回运行RB的机器的时间。
答案 0 :(得分:1)
从阅读the source code看来,R::isoDateTime()
只是一种便捷方法。它只是调用PHP time()
函数,然后使用date
函数将结果格式化为字符串。
我没有对它进行测试,但理论上 - date_default_timezone_set
函数应该有效。例如:
date_default_timezone_set('America/Los_Angeles');
答案 1 :(得分:0)
正如马特指出的那样,R::isoDateTime()
只是一种便利功能。
在RedBean的所有版本中,我检查过(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的!)那样。即使你使用RedBean设置时间,你也可能会发现日期并不是你所期望的。
这应该有所帮助:
SHOW timezone;
。ALTER ROLE myuser SET timezone = 'Europe/Paris';
。R::isoDateTime()
的内容,而不是时区@date( 'c' )
,例如:2017-09-05T18:49:16 + 02:00。最后请记住Postgres将所有内容存储为UTC,但可以/将根据其当前设置{{1}在各种时区显示其timestamp without a time zone
类型(AKA timestamptz
) } 设置。例如:2017-09-05T18:49:16 + 02:00如果设置了欧洲/巴黎,但2017-09-05T16:49:16 + 00:00如果设置了UTC(两者都指同一时间。)< / p>
(我喜欢RedBean,但在任何地方都看不到这个。希望这对某人有帮助。)