如何在PHP中获取本地系统时间?

时间:2010-02-24 20:59:05

标签: php time cron

我正在编写一个PHP系统,我需要获得系统时间。不是GMT时间或特定于时区的时间,而是CRON系统使用的相同系统时间。我有一个CRON工作,每天午夜运行,我想在网页上显示它再次运行需要多长时间。

例如: 现在是我的系统时钟下午6点。我运行代码:

$timeLeftUntilMidnight = date("H:i", strtotime("tomorrow") - strtotime("now"));

然而,结果是“3:00”而不是“6:00”。如果我跑

date("H:i", strtotime("tomorrow"));

它返回0:00,这是正确的。但如果我跑

date("H:i", strtotime("now"));

它返回21:00,即使正确应该是18:00。

感谢。

10 个答案:

答案 0 :(得分:5)

php的time将返回系统时间。您可以使用date

对其进行格式化

如果你只是想在访问者的当地时间显示时间,那么你最好使用一点点javascript

答案 1 :(得分:5)

答案很多,但在撰写本文时甚至没有一个正确。

PHP time()函数不像大多数人所认为的那样返回系统时间,但它返回PHP本地时间,通常在php.ini中设置为date.timezone,或者设置为{{1}在一个脚本中。

例如,在我的一台服务器中,PHP时间设置为date_default_timezone_set(),系统时间设置为Europe/Rome。我在系统时间和PHP时间之间有一个小时的差异。

我打算给你一个适用于Linux的解决方案,我不知道Windows。在Linux中,系统时区设置为UTC。现在,这通常在允许的/etc/timezone设置之外,但您可以将open_basedir添加到列表中以便能够读取文件。

然后,在希望获得系统时间的脚本之上,您可以调用将脚本时区设置为系统时区的库函数。我想这个函数是类的一部分,所以我使用static:

:/etc/timezone

为了在PHP 5.3.3中使问题更糟糕'Etc / UTC'无法识别,而'UTC'是,所以我必须添加一个if来修复它。

现在你可以愉快地打电话给static function setSystemTz() { $systemTz = trim(file_get_contents("/etc/timezone")); if ($systemTz == 'Etc/UTC') $systemTz = 'UTC'; date_default_timezone_set($systemTz); } ,这真的会给你系统时间。我测试了它,因为我自己需要它,这就是我现在发现这个问题的原因。

答案 2 :(得分:1)

这是最简单,最简单的方法:

$sys_timestamp = strtotime(exec("date"));

让我们不要试图用php欺骗它,让我们得到真正的系统时间;)

(适用于任何基于unix的系统)

答案 3 :(得分:0)

<强> time()

将为您提供当前系统时间戳。

Manual

  

返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数测量的当前时间。

答案 4 :(得分:0)

您可以使用time()函数获取运行PHP的服务器的日期/时间 - 它将返回与当前日期时间对应的时间戳。

这是服务器上的系统时间 - 与cron使用的相同。

答案 5 :(得分:0)

如果您想要GMT时间,您可能需要使用gmtstrftime(),这将为您提供系统时间,但格式为GMT。 http://us2.php.net/gmstrftime上有更多信息。

答案 6 :(得分:0)

如果您在格式化日期之后:

date ('d/m/y h:i:s'); 

将完成这一操作,不需要将time()传递到日期,因为如果没有提供第二个参数,它将默认为当前系统时间。

有关更多格式选项,请参阅此处:http://php.net/manual/en/function.date.php

否则你可以使用

time()

为了获得其他人提到的当前unix时间戳。

答案 7 :(得分:0)

试试这个:

$time=date("h:i:s A", strtotime("now"-14));
echo $time;

您可以通过更改上面的14数字来调整时间。

答案 8 :(得分:0)

要获取系统的当前时间,您需要在php.ini文件中设置正确的date.timezone。例如,如果你来自印度,那么你会写:

date.timezone = Asia/Calcutta

对于德国来说,它将是:

date.timezone = Europe/Berlin

执行此操作后,date("Y-m-d H:i:s")将提供您当前的时间。获取时区请参阅list of timezones supported by PHP

答案 9 :(得分:0)

您可以通过以下Javascript获取当前时间,并将其设置为任何PHP变量而不是。

    <script>

        // For 24 hours    

        var ct = new Date();
        var hr = ct.getHours();
        var mt = ct.getMinutes();
        if (mt < 10) {
            mt = "0" + mt;
        }
        document.write("<b>" + hr + ":" + mt + " " + "</b>");    


        // For 12 hours (AM / PM)

        var ct = new Date();
        var hr = ct.getHours();
        var mt = ct.getMinutes();

        var ampm = "AM";

        if (hr >= 12) {
            ampm = "PM";
            hr = hr - 12;
        }
        if (hr == 0) {
            hr = 12;
        }
        if (mt < 10) {
            mt = "0" + mt;
        }

        document.write("<b>" + hr + ":" + mt + " " + ampm + "</b>");

   </script>