我正在写一个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。
谢谢。
发布于 2011-11-08 20:44:40
答案有很多,但是在写这篇文章的时候,甚至没有一个是正确的。
php.ini函数并不像大多数人认为的那样返回系统时间,但它返回的是php.ini,通常在php.ini中使用date.timezone设置,或者在脚本中使用date_default_timezone_set()设置。
例如,在我的一台服务器上,PHP时间设置为Europe/Rome,系统时间设置为UTC。我的系统时间和PHP时间相差了一个小时。
我将给你们一个适用于Linux的解决方案,我不知道是否适用于Windows。在Linux中,系统时区在/etc/timezone中设置。现在,这通常超出了我允许的open_basedir设置,但您可以将:/etc/timezone添加到您的列表中以能够读取该文件。
然后,在想要获取系统时间的脚本之上,您可以调用一个库函数来将脚本时区设置为系统时区。我假设这个函数是类的一部分,所以我使用static:
static function setSystemTz() {
$systemTz = trim(file_get_contents("/etc/timezone"));
if ($systemTz == 'Etc/UTC') $systemTz = 'UTC';
date_default_timezone_set($systemTz);
}更糟糕的是,在PHP 5.3.3中,'Etc/UTC‘不被识别,而'UTC’被识别,所以我不得不添加一个if来解决这个问题。
现在,您可以愉快地调用time(),它将真正为您提供系统时间。我已经测试过了,因为我自己需要它,这就是为什么我现在发现了这个问题。
发布于 2010-02-25 05:01:24
php的time将返回系统时间。可以使用date对其进行格式化
如果您只想以访问者的本地时间显示时间,那么使用一点javascript可能会更好
发布于 2013-08-02 03:54:13
这是最简单、最安全的方法:
$sys_timestamp = strtotime(exec("date"));让我们不要试图用php来欺骗它,让我们只获取真正的sys时间;)
(适用于任何基于unix的系统)
https://stackoverflow.com/questions/2329467
复制相似问题