我正在编写一个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。
感谢。
答案 0 :(得分:5)
答案 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)
答案 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>