我用日期来获取日期,但是...
它比我的电脑时间少了 3 个小时。
这date('g:i A')
我相信正在给一个时间 EST,因为我是 PST,而且休息了 3 个小时。
有没有办法让它自动输入正确的时区?
要简单地从服务器获取 3 小时的时间,您可以说:
date ('g:i A', time () + 60*60*3);
或
date ('g:i A', time () - 60*60*3);
据我所知,没有一种"完美"的方法来获取用户所在的时区,但在过去,我使用javascript来找出用户当前的计算机时间,并将其与服务器的时间进行比较。Javascript是我所知道的唯一获取与某人当前时间或时区相关的信息的方法。
您可以在配置文件 ( php.ini
) 中或在运行时配置时区。PHP 是一个服务器端应用程序,因此它不能"自动"从客户端获取时区。
文档
如果您正在处理数据,则应使用 UTC 日期/时间并适当偏移时间。
健壮的解决方案是将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")可能仍然不明确。该时区中的某些位置可能遵守 DST,有些可能没有。因此,唯一可靠的办法是尽可能具体地指定位置。