Следуя за my comment, похоже, что законно указывать счетчик больше, чем количество единиц, которые составляют следующее «большее» устройство, поэтому вы можете просто использовать P100D
. Wikipedia says:
Стандарт не запрещает значения даты и времени в представлении продолжительности с превышением своих «переносных точек», за исключением случаев, указанных ниже. Таким образом, можно использовать «PT36H», а также «P1DT12H» для представления одинаковой продолжительности. Но имейте в виду, что «PT36H» не совпадает с «P1DT12H» при переключении с или на летнее время.
В то время как пример часами, кажется, что дни тоже должны быть прекрасными (и, как показывает ваша проблема, еще более полезно, поскольку месяцы и годы не являются фиксированными величинами). Тем не менее, стандарт не определяет максимальное количество цифр для каждого блока, только:
Нулей не требуется, но максимальное количество цифр для каждого элемента должно быть согласовано с взаимодействующими сторонами.
Таким образом, все, что потребляет ваши длительности, должно принимать не менее 3 цифр на элемент для P100D
; это не похоже на необычно высокий уровень необходимой поддержки.
По какой-либо причине вы не можете просто использовать 100D? Я подозреваю, что месяц и год являются относительными величинами, но вы также можете просто указать явные 100 дней, верно? – ShadowRanger
@ShadowRanger Я предполагаю (возможно, ошибочно), что каждое поле ограничено по диапазону, поэтому вы не могли (например) указать минуты> 59. Если нет, значит, «P100D» будет работать нормально! – Roddy