PHP 查找最接近时间线周期的日期

标签 php date range period

所以,嗯,好的。这可能涉及到数学问题,所以希望你带上了科学计算器 ;)

这是我的问题:

alt text

给定初始日期(时间戳)、时间段(秒)和今天的日期(时间戳),我需要找到与时间段*n 加上原始/初始日期重合的最近日期。

到目前为止,我得到了一些效果很好的东西,例如初始日期和最终(今天)日期之间的“期间”数量,在上面的演示中为“2”:

$initial=strtotime('2 April 1991');
$time=time();
$period=strtotime('+10 years',0);

$periods=round(($time-$initial)/$period);

接下来我做的是:

$range=$periods*$period;

最后:

echo date('d M Y',$initial+$range);

写着“2011 年 4 月 3 日”。怎么到3了? (我怀疑这是一个闰年问题?) 你知道当你错过一些小东西时的感觉吗?我现在全身都感觉到了....

最佳答案

好吧,如果我明白你在问什么,你想知道给定时间段内的下一个日期(在你的情况下,从 1991 年 4 月 2 日开始每 10 年,下一个日期是什么时候: 2011 年 4 月 2 日)。

因此,您应该更深入地了解 DateTime PHP 中的类 wayyyy 更适合用于日期,因为它更准确。你把它和 DateInterval 混在一起完全符合您的需要:

<?php
$interval = new DateInterval('P10Y'); // 10 years
$initial = new DateTime('1991-04-02');
$now = new DateTime('now');

while ($now->getTimestamp() > $initial->getTimestamp()) {
    $initial = $initial->add($interval);
}

echo $initial->format('d M Y'); // should return April 2, 2011 !
?>

关于PHP 查找最接近时间线周期的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4509115/

相关文章:

PHP - 计算每天的 SQL 结果

php - Mysql 查询更新行并使用相同的查询返回新值

java - 为什么JDBC在保存日期时会将时间调整为默认时区?

java - JNI 中的日期问题

php - 如何在 PHP 中查找和打印两个数字之间的所有数字?

javascript - jQuery 范围输入默认值

range - 在 Cassandra 中加载 range_slices 时出现问题

javascript - 默认情况下无法将整个 div 内容设置为只读,并且在单击编辑按钮时无法启用编辑

php - Yii 中的下拉列表值未正确更新

date - Elasticsearch - 查询没有指定时区的日期