假设现在我有这样的日期时间显示:

2010-05-29 15:32:35


相应的时区可以通过date_default_timezone_get获取,

如何在与用户浏览器相同的时区中输出结果,以免使用户感到困惑?

最佳答案

没有可靠的方法从PHP或JavaScript读取用户的语言环境时区设置。

在JavaScript中,您可以读取UTC与用户当前时区中的时间之间的偏移量,但这并不能为您提供时区名称,因此您可以保留时区标识符(使时间完全不明确)或保留其中是类似于UTC+01:00的显式偏移量,这很丑陋,并且仍然不会在不同的DST时段更改时区。

正如bobah所说,您可以在JavaScript toLocaleString()上使用Date在客户端的实际桌面时区中将其输出。但是,通过这种方式,您完全无法控制日期格式。例如,在我的机器上,Chrome输出笨拙的代码:

Sat May 29 2010 15:03:46 GMT+0200 (W. Europe Daylight Time)


歌剧只是咳嗽:

29/05/2010 15:03:46


它根本没有说明时区,因此毫无意义。 IE同样简洁,Safari也没有规定时区。 Firefox在Linux上适合我,但在Windows上不适合。啊

因此,如果您需要可靠性,处理时区的唯一方法是让用户在其站点设置中手动选择一个,然后在为其创建页面时将其从UTC转换为该时区。您可以在JavaScript中猜测它在某些常见时区中最有可能是哪个(有关策略,请参见this question),但是您不能保证您会正确。

关于php - 如何使用PHP或javascript在与用户相同的时区中显示日期时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2934465/

10-16 11:36