我正在尝试将一行代码添加到以时间开头的html文档中。我希望时区与我相关,但我无法从默认的UTC更改它。我已经将php.ini文件更改为PST以及使用date_default_timezone_set('America / Los_Angeles');然而它仍然比我的时区提前7小时打印时间。下面是处理时间的代码:
session_start();
if(isset($_SESSION['name']))
{
date_default_timezone_set('America/Los_Angeles');
$msg = $_POST['text'];
$fo = fopen("log.html", 'a');
fwrite($fo, "<div class=msgln>(".date("g:i A").") <b style=color:red;>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($msg))."<br></div>
");
fclose($fo);
}
答案 0 :(得分:4)
服务器应设置为UTC,您不应该更改默认值。相反,你想要做的是根据时间创建一个DateTime对象,然后将其转换为你想要的时区,并显示。
$now = new DateTime();
$now->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $now->format('g:i A');
我不知道您的格式字符串是否有效,但格式方法被假定与您在原始示例中使用的date()函数所接受的格式兼容。
答案 1 :(得分:2)
首先确保您使用的是有价值的时区。您可以在PHP文档中找到list of supported timezones。
第二个问题是使用date()而未指定时间戳。默认为time()生成的时间戳(基于文档中的注释)是UTC时间。您必须使用strftime()或手动减去与UTC的差异。
答案 2 :(得分:1)
如果您使用'etc / GMT',您可以将dateTime对象设置为所需的时区,如下所示:
$dtz = new DateTimeZone('etc/GMT-10');
$dt = new DateTime(date("Y-m-d h:i A"), $dtz);
$date = gmdate("Y-m-d h:i A", $dt->format('U'));