Что означает префикс «PT» в Duration? - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь использовать класс Duration вместо long. У этого есть превосходящий буквальный синтаксис. Мне нравится его гибкость, хотя он выглядит странно.

«PT10S» означает 10 секунд, в чем проблема, чтобы принять «10 секунд» ?! Ладно, неважно.

Мне просто любопытно, почему был выбран префикс PT (а не "DU", например), и почему любой префикс здесь лучше, чем ничего?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Java взяла подмножество стандартного формата ISO 8601 на время. Поэтому «почему» - это почему стандарт был написан таким, какой он есть, и это игра в догадки. Мой путь:

  • P для периода было выбрано так, чтобы вы могли отличить продолжительность от даты и / или времени. Тем более, что период также может быть записан в том же формате, что и местная дата-время, например P0003-06-04T12:30:05 в течение 3 лет 6 месяцев 4 дня 12 часов 30 минут 5 секунд, P может потребоваться для различения. P также дает небольшое, но быстрое и удобное подтверждение в случае, если вы пропустите совершенно другую строку в месте, где ожидалась продолжительность. И да, PT10S выглядит странно, но как только вы привыкнете к этому, вы сразу узнаете это как длительность, что может быть практичным.
  • T для времени между частью даты и частью времени было выбрано по двум причинам:
    • Для согласованности со строками даты и времени, в которых T находится в одном и том же месте, например 2018-07-04T15:00 для 4 июля 2018 года в 15:00.
    • Чтобы устранить неоднозначность в противном случае M для месяцев или минут: P3M однозначно означает 3 месяца, а PT3M означает 3 минуты.
0 голосов
/ 04 июля 2018

Как можно найти на странице Jesper, связанной с ( ISO-8601 - Элементы данных и форматы обмена - Обмен информацией - Представление даты и времени )

P is the duration designator (for period) placed at the start of the duration representation.
Y is the year designator that follows the value for the number of years.
M is the month designator that follows the value for the number of months.
W is the week designator that follows the value for the number of weeks.
D is the day designator that follows the value for the number of days.
T is the time designator that precedes the time components of the representation.

То есть PT означает период времени.

«Почему» это было выбрано, вы должны спросить членов ISO, которые написали стандарт, но я предполагаю, что его легче разобрать. (короткий и однозначный)

...