php – 将DateInterval格式化为ISO8601
发布时间:2020-12-13 16:58:30 所属栏目:PHP教程 来源:网络整理
导读:我目前正在开发一个php项目,需要将DateInterval格式化为ISO8601(类似这样): P5D 此格式可用于创建DateTime和DateInterval对象,但我无法找到将DateInterval格式化为此格式的方法.有没有?如果没有,那可能是一个轻量级的解决方案呢? 解决方法 那么,如果你在
我目前正在开发一个php项目,需要将DateInterval格式化为ISO8601(类似这样):
P5D 此格式可用于创建DateTime和DateInterval对象,但我无法找到将DateInterval格式化为此格式的方法.有没有?如果没有,那可能是一个轻量级的解决方案呢? 解决方法
那么,如果你在构造一个格式时查看格式的规范:
然后看看你有什么工作(http://php.net/manual/en/dateinterval.format.php),看起来你会做的是: $dateInterval = new DateInterval( /* whatever */ ); $format = $dateInterval->format("P%yY%mM%dD%hH%iM%sS"); //P0Y0M5D0H0M0S //now,we need to remove anything that is a zero,but make sure to not remove //something like 10D or 20D $format = str_replace(["M0S","H0M","D0H","M0D","Y0M","P0Y"],["M","H","D","M","P"],$format); echo $format; //P0M5D 现在,我做的不同之处是我总是包括月份,即使它是0.这样做的原因是分钟和月份都由M表示 – 如果我们总是包括月份,那么如果有一分钟我们知道这是几分钟.否则,我们必须做一堆逻辑,看看我们是否需要将P更改为PT,因此它知道此实例中的a M代表Minute. 例如: // For 3 Months new DateInterval("P3M"); // For 3 Minutes new DateInterval("PT3M")); 但相反,我们做: // For 3 Months new DateInterval("P3M"); // For 3 Minutes new DateInterval("P0M3M")); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |