我想暂时将 24 小时添加到时间戳。如何找到 24 小时的 unix 时间戳编号,以便立即将其添加到时间戳中?
我还想知道如何将 48 小时或多天添加到当前时间戳。
我怎样才能最好地做到这一点?
【问题讨论】:
“如何添加 48 小时或多天” - 夏令时是个问题吗? 我想指出 Álvaro G. Vicario 的回答。添加简单的 24 小时可能不是您在每种情况下都想要的。 是的,这就是为什么我想知道 zeckdude 是否知道 dst 以及他是否对此感到担忧。 【参考方案1】:您可能希望添加一天而不是 24 小时。由于(在其他情况下)夏令时,并非所有日子都有 24 小时:
strtotime('+1 day', $timestamp);
【讨论】:
这个案例并没有那么晦涩难懂,因为早先问题的所有其他代码都会在下周日早上中断。 +1 由于这种情况,我的代码认为 March 有 32 天,因此最好记住 DST,除非您仅在 GMT 中操作。【参考方案2】:Unix 时间戳只是自 1970 年 1 月以来的秒数,因此要将 24 小时添加到 Unix 时间戳,我们只需添加 24 小时的秒数。 (24 * 60 *60)
time() + 24*60*60;
【讨论】:
24*60*60 = 86400(可能会为某人节省几秒钟)【参考方案3】:添加24*3600
,即24小时内的秒数
【讨论】:
当夏令时从冬季切换到夏季或反之亦然时,这可能无法正常工作【参考方案4】:Unix 时间戳以秒为单位,因此只需将相应的秒数添加到时间戳即可:
$timeInFuture = time() + (60 * 60 * 24);
【讨论】:
不,这不会考虑夏令时从夏季到冬季的切换,反之亦然【参考方案5】:您也可以使用DateTime 类:
$timestamp = mktime(15, 30, 00, 3, 28, 2015);
$d = new DateTime();
$d->setTimestamp($timestamp);
添加 P1 Day:
$d->add(new DateInterval('P1D'));
echo $d->format('c');
更多详情请见DateInterval。
【讨论】:
【参考方案6】:正如您所说,如果您想立即为时间戳添加 24 小时,那么您可以这样做:
<?php echo strtotime('+1 day'); ?>
以上代码将为您当前的时间戳增加 1 天或 24 小时。
代替+1 day
,您可以随心所欲,正如php手册所说strtotime可以解析任何英文文本日期时间描述成 Unix 时间戳。
手册中的示例如下:
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
【讨论】:
【参考方案7】:$time = date("H:i", strtotime($today . " +5 hours +30 minutes"));
//+5 hours +30 minutes Time Zone +5:30 (Asia/Kolkata)
【讨论】: