从 php 中带有时区标识符的 unix 时间戳返回本地时间

2022-01-13 00:00:00 datetime timestamp php

我在网页上有一个以时区标识符作为值的下拉框(但是,如果这是更好的选择,我可以更改它以保存 GMT 偏移量).目前,用户会将美国/丹佛"之类的内容保存为他/她的时区.

I have a dropdown box on a webpage that takes a timezone identifier as the value (however I can change it to save the GMT offset if that is a better choice). Currently a user would be saving something like "America/Denver" as his / her time zone.

我需要将 unix 时间戳转换为用户的本地时间,以便在页面的另一部分显示.实现这一目标的最佳方法是什么?

I need to convert a unix timestamp into the user's local time for display in another portion of the page. What is the best way to accomplish this?

将 GMT 偏移量存储在数据库中并用于时间计算会更好吗?有人可以在这里指出我正确的方向吗?

Would it be better to store the GMT offset in the database and use that for a time calculation? Can someone please point me in the right direction here?

谢谢!

推荐答案

最简单的方法是使用 DateTime 与:

The easiest approach would be to use DateTime with:

$t = new DateTime();
$t->setTimestamp( $time=time() );
$t->setTimeZone(new DateTimeZone("America/Denver"));
print $t->format(DateTime::RFC850);

时区可以随意更改,使格式化函数重新计算当地时间.

The timezone can be changed at will to cause the format function to recalculate the local time.

相关文章