PHP转回时间

NVG*_*NVG 3 php datetime

我想在当前时间前10秒返回时间并以此格式输出日期('H/i/s')

我怎样才能做到这一点 ?

我不希望得到当前时间然后删除10秒.

谢谢

Jac*_*kin 7

echo date('H/i/s', time()-10);
Run Code Online (Sandbox Code Playgroud)


Yan*_*hon 5

我个人试图避免直接使用该time()值,原因是在尝试添加或减去天/周/等时.闰年等.出于所有实际目的,strtotime()始终可靠:

echo date('H/i/s', strtotime('-10 seconds', time())); // time() - 10 seconds
Run Code Online (Sandbox Code Playgroud)

**编辑**

为什么time() - 10不是很好

<?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)));
Run Code Online (Sandbox Code Playgroud)

这个的输出是

string(29) "Sun, 07 Nov 10 01:59:55 -0500"
string(29) "Sun, 07 Nov 10 01:59:55 -0400"
Run Code Online (Sandbox Code Playgroud)

请注意第二个示例中UTC的变化情况如何?如果它不完全正确并且应该Sun, 07 Nov 10 02:59:55 -0500 (看这里将其重置回正确的UTC)减去10 time()甚至是最差的!它会将时间戳恢复1小时.这可能会导致潜在的数据错误等.

同样的事情适用于添加和减去日期和月份; 直接操作time()根本不是一个好主意,并且strtotime()总是会返回给定时间操作的正确时间戳.期.