PHP转回时间

时间:2010-09-27 00:15:29

标签: php datetime

我想将当前时间前10秒的时间和此格式的日期输出('H / i / s')

我该怎么做?

我不希望得到当前时间,然后从时间上删除10秒。

由于

3 个答案:

答案 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() - 10not 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运行的用户相同。这通常意味着您无权执行此操作。如果恰好是这种情况,您可以通过调用可以更改时间的其他脚本或程序来绕过它。