如何在PHP中获取当地时间?

时间:2014-07-23 15:08:51

标签: php

我正在尝试使用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(); 

在这两种情况下,我都会比当地时间早四点四。还有其他方法可以获得当地时间吗?

7 个答案:

答案 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)。

相关问题