我正在尝试使用php获取当地时间。我写了两个不同的版本,但它们都给出了错误的时间
date_default_timezone_set('UTC');
$now = new DateTime();
echo $now->getTimestamp();
另一种方式
date_default_timezone_set('America/New York');
echo strtotime("now")."<br/>";;
$now = new DateTime();
echo $now->getTimestamp();
在这两种情况下,我都会比当地时间早四点四。还有其他方法可以获得当地时间吗?
答案 0 :(得分:18)
DateTime::getTimestamp()
返回unix时间戳。该数字始终为UTC。你想要的是根据你的时区格式化日期。
$dt = new DateTime("now", new DateTimeZone('America/New York'));
echo $dt->format('m/d/Y, H:i:s');
或根据您的需要使用不同的日期格式。
此外,您可以使用DateTime库来满足您的所有日期需求。每次要获取日期时都无需更改服务器的默认时区。
答案 1 :(得分:6)
只需使用函数date_default_timezone_set()。这是一个例子:
<?php
date_default_timezone_set("Asia/Dhaka");
echo date('d-m-Y h:i:s A');
?>
希望它会有所帮助, 感谢。
答案 2 :(得分:3)
您需要使用javascript,因为您需要来自客户端的时间值。 PHP是一种服务器端语言,用于评估服务器并将结果发送给客户端。因此,如果您尝试使用PHP函数提取日期/时间,它将从服务器提取日期,而服务器并不总是在客户端的时区。
您可以在javascript函数中执行此操作,然后在显示中引用该值。
var thisDateTime = new Date();
答案 3 :(得分:1)
如果您不想使用时区,可以使用windows和php命令的混合:
<?php
$D = exec('date /T');
$T = exec('time /T');
$DT = strtotime(str_replace("/","-",$D." ".$T));
echo(date("Y-m-d H:i:s",$DT));
?>
答案 4 :(得分:0)
我想知道为什么没有人在PHP中提到带有索引键数组结果的localtime(time(), true);
或带有关联键数组结果的this.form.amount
。
答案 5 :(得分:-1)
您可以使用 localtime()功能或 date_default_timezone_set()功能来解决此问题。
了解有关localtime()函数reffer的更多信息:
http://php.net/manual/en/function.localtime.php
或
详细了解date_default_timezone_set()函数reffer http://www.php.net/manual/en/function.date-default-timezone-set.php
我认为这必须帮助你..
答案 6 :(得分:-1)
出于记录,我发现读取机器实际运行时间的唯一解决方案是读取PHP之外的信息(javascript,shell或其他进程)。为什么?
例如,假设我们有一个小时的每日储蓄时间。如果操作系统(在我的情况下为Windows)的时区与PHP的时区不同步,该怎么办呢?也许机器使用的时间不同,而忽略了每天节省的时间。
现在,我的区域是UTC -4 Santiago 9:35 pm(每天保存)。但是,PHP认为是晚上10:35(使用localtime,time,date和DateTime)。