繁体   English   中英

如何在PHP中从日期时间中减去时间长度?

[英]How can I subtract a length of time from a datetime in PHP?

假设我有日期时间,例如2013-01-16-0900 如何减去一个时间长度(例如30分钟)?

它存储为与您发布的字符串完全相同的字符串,还是实际上是unix时间戳? 如果是字符串,则可以在其上运行strtotime ,然后从中减去1800 (秒),然后使用date()将其转换回去。 那可能是最简单的方法。

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

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

在此示例中, $timestamp = '2013-01-16-0900'

对于使用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');

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM