现在假设我有日期时间显示是这样的:如何在使用PHP或JavaScript的用户所在的同一时区显示日期时间?
2010-05-29 15:32:35
的相应的时区可以通过date_default_timezone_get
得到,
我怎么把结果输出在同一个时区的用户浏览器,以便用户不会感到困惑?
现在假设我有日期时间显示是这样的:如何在使用PHP或JavaScript的用户所在的同一时区显示日期时间?
2010-05-29 15:32:35
的相应的时区可以通过date_default_timezone_get
得到,
我怎么把结果输出在同一个时区的用户浏览器,以便用户不会感到困惑?
你可以通过UTC时间戳的页面,并将它们与JavaScript的转换。我曾经使用过这个技巧,并对结果感到满意。 JavaScript日期采用UTC时间戳constructor。对于从PHP生成UTC时间戳,可以使用gmmktime()。
还有就是阅读PHP或JavaScript用户的本地时区设置,没有可靠的方法。
在JavaScript中,您可以读取UTC和用户当前时区中的时间之间的偏移量,但这不会给您一个时区名称,因此您可能会遗留时区标识符(使时区完全不明确) )或包括它是一个明显的偏移量,如UTC+01:00
,这是丑陋的,并且仍然不考虑在不同的DST周期上更改时区。
正如bobah所说,您可以使用toLocaleString()
上的JavaScript 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的战略),但你不能保证你会是正确的。
你能举例说明?我不熟悉的日期时间函数在所有... – user198729 2010-05-29 09:39:46
@ user198729 - 而是产生“2010-05-01 14:37:00”到HTML页面生成你喜欢的东西(新的日期(“1272717420000”))的toLocaleString的() – bobah 2010-05-29 10:00:45