ISO 8610 regexp
^(?:-([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.
Hmm, przydatne :P
Ja tam wolę RFC 822.