Я хочу представить временной интервал в качестве начала / конца, но также при использовании преимуществ аббревиатур, которые, как представляется, ISO 8601: для полей конца интервала такие же, как в начальной точке. Например, интервал, начинающийся прямо сейчас и продолжающийся неделю, будет 2016-06-08T12: 27Z / 15T12: 27 (обратите внимание на пропуск второго «2016-06-»).
Предотвратить потенциальную XY-проблему, отгадывая: I не хотите, чтобы этот интервал был представлен как 2016-06-08T12: 27Z / P1W, даже если он короче. я делать хотите, чтобы время окончания было представлено напрямую, но сокращено, насколько это возможно.
Я не думаю, что DatePeriod делает то, что я хочу — не так ли? Кажется, что он либо выполняет половину работы (начинается и заканчивается независимо, без возможности сокращения), либо неправильно (возвращает продолжительность, а не время окончания).
Я не понимаю твою проблему. Но как насчет короткой записи периода:
Сделать строку 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$
Других решений пока нет …