如何在 PHP 中将时间间隔简洁地格式化为 ISO 8601 start/end?

How to format a time interval concisely as ISO 8601 start/end in PHP?

我想将时间间隔表示为 start/end,同时利用 ISO 8601 似乎允许的缩写:对于与起点相同的间隔结束字段。例如,从现在开始持续一周的时间间隔为 2016-06-08T12:27Z/15T12:27(注意省略了第二个“2016-06-”)。

防止潜在的 XY 问题事后猜测:我希望此间隔表示为 2016-06-08T12:27Z/P1W,即使它更短.我确实希望直接表示结束时间,但尽可能缩写。

我认为 DatePeriod 没有按照我的意愿行事 - 是吗?它似乎完成了一半的工作(独立开始和结束,不可能缩写)或错误的工作(返回持续时间,而不是结束时间)。

我不明白你的问题。但是短周期记录呢:

制作字符串2016-06-08T12:27Z/2016-06-15T12:27

并通过简单的正则表达式减少它:

^(.+)\b(.+)\/(.+)  to  /  =>  2016-06-08T12:27Z/15T12:27 

demo

更新

测试后的共同结果

^(.*)(?:\b|T)(.*Z)\/(.+)Z$

demo