解析并创建ISO 8601日期和时间间隔,如PHP中的PT15M

我正在使用的图书馆和网络服务,在ISO 8601:PnYnMnDTnHnMnS中传达时间间隔。我想将这样的格式转换成秒。反之亦然。秒数比较容易计算。

示例间隔值为:

> PT1M或PT60S(1分钟)
> PT1H,PT60M或PT3600S(1小时)

我需要两个功能:从这些值解析为秒:iso8601_interval_to_seconds(),从秒到这样的间隔:iso8601_interval_from_seconds()。

后者是相当简单的,因为它可以像“PT {$ seconds} S”一样完成,只需随时传递秒。也许这可以更好的解析器切换到H(小时)或M(分钟)?

第一个更难,但也许PHP中有许多字符串转换器之一呢?我很乐意学习如何使用这样的函数来解析间隔。或者学习一个选择。

最佳答案
看起来PHP 5.3的DateInterval支持这一点。

如果你不能使用5.3,我想这样的转换功能会知道一年,一个月,一天,一个小时和一分钟的秒数。然后,当从秒转换时,它将以该顺序分割,每次以前一次操作的模数,直到只剩下<60秒。当从ISO 8601间隔表示转换时,解析字符串应该是微不足道的,并相应地乘以每个找到的元素。

转载注明原文:解析并创建ISO 8601日期和时间间隔,如PHP中的PT15M - 代码日志