我用日期来获取日期但是......
离电脑时间3小时。
这date('g:i A')
给我一个时间EST,我相信因为我是太平洋标准时间,它是3个小时。
有没有办法让它自动放置正确的时区?
答案 0 :(得分:1)
您可以在配置文件(php.ini
)或运行时配置时区。 PHP是服务器端应用程序,因此它无法“自动”从客户端获取时区。
如果您正在处理数据,则应使用UTC日期/时间并适当地抵消时间。
答案 1 :(得分:1)
要简单地从服务器获取3小时的时间,您可以说:
date ('g:i A', time () + 60*60*3);
或
date ('g:i A', time () - 60*60*3);
据我所知,没有“完美”的方式来获取用户所在的时区,但过去我使用javascript来查找用户当前的计算机时间并将其与服务器的时间进行比较。 Javascript是我所知道的获取与某人当前时间或时区相关的任何信息的唯一方法。
答案 2 :(得分:1)
强大的解决方案是将DateTime
与DateTimeZone
一起使用,而不是date
:
<?php
$date = new \DateTime(null, new \DateTimezone('PST'));
// or even better:
$date = new \DateTime(null, new \DateTimezone('America/Los_Angeles'));
$formatted = $date->format('g:i A');
请注意,仅使用诸如“PST”之类的通用时区可能仍然不明确。该时区的某些位置可能正在观察夏令时,有些可能没有。因此,唯一可靠的做法是尽可能具体地指定位置。