web-dev-qa-db-fra.com

Que signifie le préfixe «PT» dans Durée?

J'essaie d'utiliser la classe Duration au lieu de long. Il a une syntaxe littérale supérieure. J'aime sa flexibilité, même si elle a l'air bizarre.

"PT10S" signifie 10 secondes, quel est le problème pour accepter "10 secondes"?! OK, c'est pas grave.

Je suis simplement curieux de savoir pourquoi le préfixe PT a été choisi (pas "DU" par exemple) et pourquoi un préfixe est meilleur ici plutôt que rien?

10
Daneel S. Yaitskov

Comme on peut le trouver sur la page Jesper liée à ( ISO-8601 - Éléments de données et formats d'échange - Échange d'informations - Représentation des dates et heures )

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.

Donc PT signifie période de temps.

Le "pourquoi" cela a été choisi, vous devez demander aux membres de l'ISO qui ont écrit la norme, mais je suppose que c'est plus facile à analyser. (court et sans ambiguïté)

16
RobAu

Java a pris un sous-ensemble du format standard ISO 8601 pour une durée. Donc, le "pourquoi" est la raison pour laquelle la norme a été écrite telle qu'elle est, et c'est un jeu de devinettes. Mon coup c'est:

  • P pour la période a été choisi afin que vous puissiez distinguer une durée d'une date et/ou d'une heure. D'autant plus qu'une période peut également être écrite dans le même format qu'une date-heure locale, par exemple P0003-06-04T12:30:05 pendant 3 ans 6 mois 4 jours 12 heures 30 minutes 5 secondes, le P peut être nécessaire pour distinguer. Le P donne également un peu mais rapide et pratique de validation au cas où vous passeriez une chaîne complètement différente à un endroit où une durée était attendue. Et oui, PT10S a l'air bizarre, mais une fois que vous vous y êtes habitué, vous le reconnaissez immédiatement comme une durée, ce qui peut être pratique.
  • T pour le temps entre la partie date et la partie temps a été choisi pour deux raisons:
    • Par souci de cohérence avec les chaînes de date-heure qui ont T au même endroit, par exemple 2018-07-04T15:00 pour le 4 juillet 2018 à 15h00.
    • Pour lever l'ambiguïté du M par ailleurs ambigu pour des mois ou des minutes: P3M signifie sans ambiguïté 3 mois tandis que PT3M signifie 3 minutes.
4
Ole V.V.