0

假设我有类似的日期时间2013-01-16-0900。我怎样才能减去一段时间——比如 30 分钟?

4

3 回答 3

0

它是完全像您发布的那样存储为字符串,还是实际上是 unix 时间戳?如果它是一个字符串,你可以strtotime在它上面运行,然后从中减去1800(秒),然后用date(). 这可能是最简单的方法。

于 2013-01-16T02:12:00.217 回答
0

这将从提供​​的时间戳中减去 30 分钟。

echo date( 'Y-m-d-Hi', strtotime( $timestamp ) - 30 * 60 );

$timestamp = '2013-01-16-0900'在这个例子中。

于 2013-01-16T02:16:32.473 回答
0

我强烈倾向于使用 PHP 内置的DateTime 模块,并使用 PHP 内置的DateInterval 模块增加或减少时间。这允许您执行相当复杂的日期/时间数学,并且仍然遵守时间规则。

另外值得注意的是DateTimeZone

示例时间

$dt = new DateTime("2013-01-16-0900", new DateTimeZone("America/Los_Angeles"));
$dt->setTimeZone("America/New_York");
$dt->sub(new DateInterval("PT30M"));
print $dt->format('Y-m-d H:i:s');

组装时间间隔字符串有一些学习曲线,但是一旦你弄清楚了,你应该能够编写一个可重用的函数。

于 2013-01-16T03:07:24.167 回答