datetime — Как отформатировать временной интервал как начало / конец ISO 8601 в PHP?

Я хочу представить временной интервал в качестве начала / конца, но также при использовании преимуществ аббревиатур, которые, как представляется, ISO 8601: для полей конца интервала такие же, как в начальной точке. Например, интервал, начинающийся прямо сейчас и продолжающийся неделю, будет 2016-06-08T12: 27Z / 15T12: 27 (обратите внимание на пропуск второго «2016-06-»).

Предотвратить потенциальную XY-проблему, отгадывая: I не хотите, чтобы этот интервал был представлен как 2016-06-08T12: 27Z / P1W, даже если он короче. я делать хотите, чтобы время окончания было представлено напрямую, но сокращено, насколько это возможно.

Я не думаю, что DatePeriod делает то, что я хочу — не так ли? Кажется, что он либо выполняет половину работы (начинается и заканчивается независимо, без возможности сокращения), либо неправильно (возвращает продолжительность, а не время окончания).

0

Решение

Я не понимаю твою проблему. Но как насчет короткой записи периода:

Сделать строку 2016-06-08T12:27Z/2016-06-15T12:27

и простым регулярным выражением уменьшите его:

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

демонстрация

ОБНОВИТЬ

Общий результат после тестирования

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

демонстрация

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]