mwgamera has no life


ISO 8610 regexp

Wpis na 0. poziomie, wysłany 2006-07-26 17:31:37

^(?:-([0-9]{1,2})|([0-9]{4}))?(?:-?(?:([0-9]{2})?(?:-?([0-9]{2}))?|W([0-9]{2})(?:-?([1-7]))?|([0-9]{3})))?(?:T([0-9]{2})(?::?([0-9]{2})(?::?([0-9]{2}))?)?(?:[,\.]([0-9]+))?(?:(Z)|([+-])([0-9]{2})(?::?([0-9]{2}))?)?)?$ Oto wyrażenie regularne, które może posłużyć do walidacji bądź parsowania daty/czasu w formacie ISO 8610.

Dopasowania

  • rok
    • [1] końcowe cyfry
    • [2] pełny rok
  • data kalendarzowa
    • [3] miesiąc
    • [4] dzień miesiąca
  • data tygodniowa
    • [5] numer tygodnia
    • [6] dzień tygodnia
  • data porządkowa
    • [7] dzień roku
  • czas
    • [8] godziny
    • [9] minuty
    • [10] sekundy
    • [11] część ułamkowa
  • streaf czasowa
    • [12] Z — UTC
    • przesunięcie względem UTC
      • [13] kierunek (+/-)
      • [14] godziny
      • [15] minuty

Każdy z tych elementów może być pusty.

To wyrażenie pasuje do wszystkich rodzajów dat zdefiniowanych w ISO 8601 w ich pełnej postaci (zarówno podstawowej jak i rozszeżonej). Pasuje też do niektórych skróconych reprezentacji. Pole [1] jest używane do niektórych skróconych wersji, które pozwalają na przedstawienie roku w postaci jednej lub dwóch ostatnich cyfr. Należy zwrócić uwagę, że [11] to nie są milisekundy, tylko część ułamkowa ostatniego pola (np. T20.5 = T20:30).

Przy pisaniu tego korzystałem z ISO 8601:2000 w wersji z 2000-10-05.

Zwykle jednak bardziej interesujący jest podzbiór zdefiniowany przez W3C. Gotową funckcję w javascripcie, która parsuje taką datę można znaleźć na blogu Paula Sowdena.


Komentarze do notki ISO 8610 regexp

  1. 2006-07-26 18:12:13

    Hmm, przydatne :P

  2. Michał Górny (566880)
    2006-07-28 10:55:50

    Ja tam wolę RFC 822.

Dodaj komentarz:

Komentarze można formatować przy użyciu Markdown.