我想将当前时间前10秒的时间和此格式的日期输出('H / i / s')
我该怎么做?
我不希望得到当前时间,然后从时间上删除10秒。
由于
答案 0 :(得分:7)
echo date('H/i/s', time()-10);
答案 1 :(得分:5)
我个人试图避免直接使用time()
值,原因是在尝试添加或减去天/周/等时。闰年等。出于所有实际目的,strtotime()
总是可靠的:
echo date('H/i/s', strtotime('-10 seconds', time())); // time() - 10 seconds
** 编辑 **
为什么time() - 10
是not good?
<?php
// this is my timezone, but it applies to any DST zones....
date_default_timezone_set('America/Montreal');
$time = strtotime('2010-11-07 02:00:05');
var_dump(date(DATE_RFC822, $time - 10));
var_dump(date(DATE_RFC822, strtotime('-10 seconds', $time)));
这是
的输出string(29) "Sun, 07 Nov 10 01:59:55 -0500"
string(29) "Sun, 07 Nov 10 01:59:55 -0400"
注意第二个例子中UTC的变化情况如何?如果它不完全正确且应该是Sun, 07 Nov 10 02:59:55 -0500
(请参阅here将其重置为正确的UTC)将10减去time()
甚至更糟!它会将时间戳恢复1小时。这可能会导致潜在的数据错误等。
同样的事情适用于添加和减去日期和月份;直接操作time()
根本不是一个好主意,strtotime()
将始终返回给定时间操作的正确时间戳。周期。
答案 2 :(得分:3)
要更改系统时间,您需要调用操作系统的API来更改时间。在Linux上,您可以使用date
命令执行此操作:
date MMDDhhmmYYYY.ss
例如,date 092619222010.30
会将日期和时间设置为Sep 26 2010 19:22:30
。在PHP上,您可以尝试使用system()
1 函数来执行此操作。
$stamp = date('mdHiY.s', time()-10);
system("date $stamp");
1 如果PHP在mod_php(默认设置)下运行,则它与Apache运行的用户相同。这通常意味着您无权执行此操作。如果恰好是这种情况,您可以通过调用可以更改时间的其他脚本或程序来绕过它。