栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我们如何在PHP中添加两个日期间隔

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我们如何在PHP中添加两个日期间隔

PHP没有运算符重载*,因此

+
有了对象,PHP会尝试先将其转换为字符串,但
DateInterval
不支持:

interval 1: 03:05interval 2: 05:00Total interval : 08:05

相反,您需要创建一个新

DateTime
对象,然后使用该
add
函数添加间隔,最后将差异显示到参考点:

$e = new DateTime('00:00');$f = clone $e;$e->add($interval1);$e->add($interval2);echo "Total interval : ", $f->diff($e)->format("%H:%I"), "n";

完整示例/(演示):

$a = new DateTime('14:25');$b = new DateTime('17:30');$interval1 = $a->diff($b);echo "interval 1: ", $interval1->format("%H:%I"), "n";$c = new DateTime('08:00');$d = new DateTime('13:00');$interval2 = $c->diff($d);echo "interval 2: ", $interval2->format("%H:%I"), "n";$e = new DateTime('00:00');$f = clone $e;$e->add($interval1);$e->add($interval2);echo "Total interval : ", $f->diff($e)->format("%H:%I"), "n";

您可能还需要考虑查看如何

DateInterval
存储其值,然后从中扩展以自己计算。以下示例(Demo)很粗糙,它没有考虑到倒置的东西,也没有(
$days``false
重置为,并且我还没有在创建时检查/测试周期说明符的ISO规范,但我认为这足以显示想法:

class MyDateInterval extends DateInterval{        public static function fromDateInterval(DateInterval $from)    {        return new MyDateInterval($from->format('P%yY%dDT%hH%iM%sS'));    }    public function add(DateInterval $interval)    {        foreach (str_split('ymdhis') as $prop)        { $this->$prop += $interval->$prop;        }    }}$a = new DateTime('14:25');$b = new DateTime('17:30');$interval1 = $a->diff($b);echo "interval 1: ", $interval1->format("%H:%I"), "n";$c = new DateTime('08:00');$d = new DateTime('13:00');$interval2 = $c->diff($d);echo "interval 2: ", $interval2->format("%H:%I"), "n";$e = MyDateInterval::fromDateInterval($interval1);$e->add($interval2);echo "Total interval: ", $e->format("%H:%I"), "n";

*如果编写PHP扩展,实际上是有可能的(至少是排序的)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/597088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号