我明白<?//////////////////?>会给我"Tuesday 18th of June 2013 10:45:32 PM"或者我的服务器所在的日期和当地时间,我相信是德克萨斯州。
我想显示加利福尼亚时间或PDT时间,每个都比我的服务器时间晚2小时。
我试图用<? 作用(PDT);?
请注意,我不是试图从用户计算机获取数据(我们可以用JS或其他用户端语言做到这一点)。我想从服务器得到时间减去2小时
这个例子展示了如何获取另一个时区的当前时间。美国太平洋时间的正确IANA时区是America/Los_Angeles
。
$datetime = new DateTime('NOW', new DateTimeZone('America/Los_Angeles'));
echo $datetime->format('Y-m-d H:i:s');
请参考PHP文档中的Date and Time。
Wikipedia有关于可用时区标识符的很好的参考。
此函数将根据时区返回时间
function currenttime($y,$m,$d){
$timezone = new DateTimeZone("America/New_York");
$date = new DateTime();
$date->setTimezone( $timezone );
$y=$date->format($y);
$m=$date->format($m);
$d=$date->format($d);
$h=$date->format('H');
$i=$date->format('i');
$s=$date->format('s');
return mktime($h,$i,$s,$m,$d,$y);
}
使用此链接获取所需时区http://www.php.net/manual/en/timezones.php
使用time()获取时间戳。
将时间戳调整为要显示的时区。
然后用date()显示。
$ts = time() - (2*60*60); // minus 2 hours
echo date('l jS of F Y h:i:s A', $ts);
您可以将时区设置为UTC,以避免服务器时区设置的影响。
date_default_timezone_set('UTC');
或者直接使用gmdate()而不是date(),以UTC时区显示。
$ts = time() - (2*60*60); // minus 2 hours
echo gmdate('l jS of F Y h:i:s A', $ts);
这可能会给你一个想法…
<?php
echo '2 hours behind my server time: '. date('Y-m-d h:m:i', strtotime('+2 hour')) ."n";
?>