Międzynarodowa norma ISO 8601 określa cyfrowe przedstawienie daty i godziny - odpowiednio na podstawie kalendarza gregoriańskiego i systemu 24-godzinnego . Ten zapis, utworzony w 1988 roku, ma na celu w szczególności uniknięcie wszelkiego ryzyka pomyłki w komunikacji międzynarodowej ze względu na dużą liczbę różnych zapisów narodowych. Ma również wiele zalet w przypadku używania komputera w porównaniu z innymi zapisami.
W zależności od aplikacji istnieje sześć poziomów szczegółowości w tym formacie. Z tego powodu możliwe jest pominięcie niektórych elementów.
Przykłady:
Należy jednak zauważyć, że międzynarodowa organizacja normalizacyjna ( ISO 8601) rozwiązuje wszelkie nieporozumienia, ustanawiając uznany międzynarodowo format przedstawienia daty: 1977-04-22 .
Bieżąca data ISO: |
---|
2021-05-04 |
Bieżący czas ISO [ aktualizacja ] : |
14:21: 13Z |
Bieżąca data i godzina ISO: |
2021-05-04T14: 21: 13Z |
lub: |
2021-W18-2T14: 21: 13Z |
Pierwsza edycja ISO 8601 została opublikowana w 1988 roku. Zastąpiła i ujednoliciła kilka norm ISO dotyczących różnych aspektów zapisu daty i czasu (normy ISO 2014, 2015, 2711, 3307 i 4031). Ta międzynarodowa norma została zaktualizowana w 2000 r., A następnie w 2004 r., Aw 2019 r. Została podzielona na 2 części: ISO 8601-1: 2019 (zasady podstawowe) i 8601-2: 2019 (rozszerzenia).
Wersja normy ISO z 1989 roku została przyjęta przez francuski system normalizacyjny pod numerem referencyjnym NF EN 28601: 1992 . Ten francuski standard został anulowany w dniu7 października 2011. Zamiast tego mają być używane edycje ISO z 2019 r.
Zapis numeryczny od najbardziej rozbudowanego do najbardziej precyzyjnego (rrrr-mm-dd) został wprowadzony przez normę ISO 2014: 1976; numeracja tygodni według ISO 2015: 1976. Oba są zintegrowane ze standardem ISO 8601.
O utrzymanie normy ISO 8601 dba komitet techniczny TC 154.
Elementy podążają za sobą w rosnącej kolejności precyzji. Zatem najmniej dokładny rok jest umieszczony na pierwszym miejscu (4 cyfry), następnie miesiąc (2 cyfry, od „01” do „12”) i data (od „01” do „31”). Każdy element jest oddzielony od poprzedniego myślnikiem „-”. Data jest oparta na kalendarzu gregoriańskim . Stąd, gdyby trzeba było reprezentować lata przed wprowadzeniem tego kalendarza (przed 1582-12-20 we Francji), z góry należy uzgodnić sposób liczenia między stronami wymieniającymi się informacjami.
Następnie wskazana jest pora dnia, która zaczyna się od litery T (dla czasu , godzina dnia w języku angielskim), po której następują następujące elementy, zawsze uporządkowane ze zwiększoną dokładnością: godziny (od „00” do „24”) , minuty (od „00” do „59”), a następnie sekundy („00” do „60”), używając dwukropka „:” jako separatora. Można po nim wstawić przecinek „”, a następnie ułamki dziesiętne sekundy, w ilości niezbędnej do uzyskania wymaganej dokładności (na przykład: „T15: 23: 56.9854”). Czasami zamiast przecinka napotykamy kropkę, szczególnie wśród osób mówiących po angielsku; standard toleruje to użycie, ale zaleca przecinek.
Uwagi
Dla wszystkich formatów akceptowanych w ISO 8601 można określić strefę czasową . Znak startu jest dodatni (+), gdy czas lokalny wyprzedza czas uniwersalny (UTC) (strefy czasowe na wschód od południka czasu Greenwich: strefy czasowe Europy Środkowej, Afryki Środkowej i Afryki Środkowej. Wschód, Azja, Zachód i Środkowy Pacyfik ). Ujemna (-) w innym przypadku (strefy czasowe niektórych krajów Europy Zachodniej lub Afryki Zachodniej, obu Ameryk, Wschodniego Pacyfiku). Istnieją trzy sposoby wskazania tej strefy czasowej:
Jeśli czas jest w UTC, należy dodać Z po godzinie i bez spacji. Tak więc 09:30 UTC jest reprezentowane jako 09:30 Z lub 0930Z .
Strefa czasowa od UTCAby uniknąć możliwych nieporozumień, jest to rzeczywiście przesunięcie wyrażone od czasu UTC (a nie w kierunku ). Co ma sens, ponieważ jest to wskazanie strefy czasowej. Tak więc T09: 00: 00 + 01: 00 odpowiada T08: 00: 00Z (9 godzin w strefie czasowej o jedną godzinę więcej niż UTC, czyli 8 godzin w UTC). 09:00 + 01:00 nie oznacza dodania 09:00 i 01:00, ale raczej to dodanie: 09:00 = UTC +01: 00 .
Poniżej zastosowano następujące oznaczenia symbolizujące prezentowane formaty:
W przypadku zapisu ułamków (godzin, minut lub sekund) separatorem dziesiętnym jest przecinek lub kropka, a przecinek jest preferowanym znakiem.
Następnie można użyć następujących formatów do wskazania:
Daty można przedstawić, podając rok i numer dnia w roku. A więc trzycyfrowa liczba od „001” do „365” (lub nawet „366” w razie potrzeby). Przykład: 1970-033 jest 33 th dni w roku 1970. Innymi słowy2 lutego 1970. Lub jeśli rok jest rokiem przestępnym, na przykład 2008-155 jest 155 th dzień roku 2008. Innymi słowy3 czerwca 2008. Ten zapis jest charakterystyczny dzięki 3 cyfrom po roku. (Sam miesiąc zajmowałby tylko dwie cyfry. Miesiąc i data wymagałyby czterech cyfr w zapisie skróconym ).
Przemysł stał się przyzwyczajeni do numerowania tygodni w roku (tydzień 1, 2, ... 52 lub nawet 53), aby zorganizować się i planować produkcję. W praktyce niekoniecznie wszyscy przestrzegają tej samej konwencji numeracji (na przykład Kanada i Stany Zjednoczone traktują niedzielę zamiast poniedziałku jako pierwszy dzień tygodnia). Ta norma ISO ściśle zdefiniowała regułę numeracji, uznaną na całym świecie i powszechnie stosowaną:
Uwagi i konsekwencje:
Standard przewiduje również zapisanie daty po tygodniu. Musisz zacząć od litery W ( tydzień , tydzień w języku angielskim), po której następuje dwucyfrowy numer tygodnia (i ewentualnie numer dnia od 1 do 7). Przykłady:
Automatyczne obliczanie numeru tygodnia w informatyce pozostaje proste, ale nie jest trywialne ze względu na kluczowe tygodnie między każdym rokiem. Dlatego też ta refleksja zasługuje na podzielenie się nią.
W wielu językach programowania narzędzia liczą dni tygodnia od niedzieli (wartość zerowa ), następnie od 1 do poniedziałku do 6 do soboty. W wielu częściach świata tydzień zaczyna się w niedzielę i matematycznie (modulo 7) 0 i 7 są takie same w testach. W przypadku wyświetlania staje się to szczególnym przypadkiem. Czasami istnieje funkcja bezpośrednio podająca znormalizowaną numerację.
Aby obliczyć numer ISO tygodnia zawierającego daną datę „D”, stosuje się różne algorytmy. Może to być na przykład:
Niektóre algorytmy wykorzystują słabo uzasadnione wyjątki lub nawet zwracają błędne wartości dla określonych dat. Zaletą poprzedniego algorytmu jest niezawodność przy jednoczesnym wykorzystaniu ogólnodostępnych funkcji ( zaimplementowano już liczenie lat przestępnych lub liczbę dni).
Jeśli znamy D dzień odpowiadający dacie (od D = 1 dla poniedziałku do D = 7 dla niedzieli), dostosowując w razie potrzeby istniejące funkcje, to czwartek tego samego tygodnia znajduje się (D-4) więcej dni wcześniej (lub później, jeśli wynik negatywny). Powiązany poniedziałek to (D-1) dni wcześniej.
Możliwe jest wskazanie tylko przydatnych elementów. Na przykład luty 2003 możemy wskazać jako: 2003-02 , bez konieczności wskazywania konkretnego dnia czy godziny. Ogólnie rzecz biorąc, można usunąć wszelkie niepotrzebne informacje (na przykład datę, jeśli używana jest tylko godzina). Co daje na przykład: T23: 45 .
W danym kontekście wszystkie zapisy powinny być skracane w ten sam sposób. Więc wszystko na tej samej liczbie znaków. Wszystko z tymi samymi informacjami. W przeciwnym razie stracimy przewagę tej standaryzacji w zakresie spójności i łatwości sortowania.
Inny przykład, jeśli wskazana jest strefa czasowa, nie zawsze jest konieczne wskazanie minut (często niepotrzebne). Zatem T23: 05 + 05: 00 można skrócić do T23: 05 + 05 lub nawet T2305 + 05, zgodnie z poniższym opisem .
Wreszcie, jeśli ze względu na czytelność wymagany jest niewielki rozmiar, można usunąć niektóre separatory (myślnik lub dwukropek). Zaleca się wtedy usunięcie wszystkich z nich (wszystkich myślników i / lub wszystkich dwukropków), aby uniknąć nieporozumień. Pismo wyrwane z kontekstu musi pozostać zrozumiałe, aw szczególności należy określić, czy jest to godzina, czy data. (2005 to rok, T2005 lub 20:05 to godziny)
Na przykład te zapisy są równoważne:
20040204 = 2004-02-04 = 2004-W06-3 = 2004W063Ostatnim skrótem jest zastąpienie obciętych elementów myślnikiem „-”. Jest rzadko używany. Jednak może okazać się konieczne uniknięcie nieporozumień. Pomijając rok, zapisalibyśmy 2 grudnia jako:
„ --1202 ”. Moglibyśmy zredukować ją do „ -1202 ” bez mylenia z samym „ 1202 ”, który reprezentowałby rok 1202.
Rok 2003 --- 12 lub 2003-12 oznaczałby dwunasty dzień dowolnego miesiąca w 2003 r., Bez pomylenia z rokiem 2003-12, który oznaczałby grudzień 2003 r.
Możliwe jest również wskazanie czasu trwania (pomiar czasu, który upłynął) lub przedziału czasu (między dwiema dokładnymi datami). Aby to zrobić, użyjemy ukośnika „ / ” jako separatora.
Przerwa między dwiema datamiUkośnik oddziela datę rozpoczęcia i datę zakończenia. Jeśli zmieni się tylko ostatni element, nie można przepisać początku. Kilka przykładów :
Czas trwania reprezentuje ilość czasu w absolucie, bez rozpoczynania od konkretnego momentu. Musisz zacząć pisać na literę P ( okres w języku angielskim). Przykład:
P18Y9M4DT11H9M8S, co oznacza (długi) czas trwania 18 lat, 9 miesięcy, 4 dni, 11 godzin, 9 minut i 8 sekund. Zauważamy, w tym przypadku stosowanie angielskich liter, aby oddzielić elementy ( Y uszu , M onths , D ays , H naszego , M inutes i S econds ). Zawsze zauważamy obecność litery T oddzielającej dni od godzin. Umożliwia to rozwiązanie niejednoznaczności między P1M (1 miesiąc) a PT1M (jedna minuta). Moglibyśmy również liczyć w tygodniach, ponownie używając litery „W”: P3W oznacza na przykład czas trwania 3 tygodni.
Jeśli kontekst wymaga rozróżnienia dodatnich i ujemnych czasów trwania, wystarczy dodać znak „+” lub „-” na początku pozycji.
Konwersja z jednej reprezentacji czasu trwania na inną zależy od kontekstu aplikacji tego czasu trwania. Standard podaje jako definicję [2.2.14] roku „czas trwania 365 lub 366 dni kalendarzowych w zależności od początku i / lub końca odpowiedniego przedziału czasu w danym roku kalendarzowym ”. Definicja [2.2.16] wspólnego roku to „ rok kalendarzowy …, który ma 365 dni”, a definicja [2.2.17] roku przestępnego to „ rok kalendarzowy …, który ma 366 dni”. To samo dotyczy czasu trwania miesiąca , którego definicja [2.2.12] to „ czas trwania 28, 29, 30 lub 31 dni kalendarzowych w zależności od początku i / lub końca odpowiedniego przedziału czasowego. W określonym kalendarzu miesiąc.
Przykłady:
Czas pomiędzy 1 st styczeń 2015 o 10 rano i 16 stycznia 2016 ro godzinie 21 można było zapisać P12M15DT11H (12 miesięcy, 15 dni i 11 godzin), nic w normie nie zabrania tego, co tylko narzuca, że „wyrażone wartości nie mogą przekraczać punktów raportowania 12 miesięcy, 30 dni, 24 godziny, 60 minut i 60 sekund ”. Jeśli jednak taka reprezentacja czasu trwania musi być wymieniana między systemami komputerowymi, wartość P1Y5DT11H musi być preferowana względem P12M5DT11H , co mogłoby pojawić się jako błąd w programach, w których zakodowane byłyby bardziej drastyczne sterowanie niż to, co narzuca standard.
Terminal i czas trwaniaNa koniec możemy połączyć te dwie notacje i wskazać okres zgodnie z jego datą rozpoczęcia i czasem trwania. Przykład:
2004-12-02 / P3D oznacza przedział czasu trwający 3 dni od 2 grudnia 2004 r.
Lub odwrotnie, możemy najpierw wskazać czas trwania, a następnie datę końcową („PT1H / 2006-01-01” oznacza czas poprzedzający zmianę na Nowy Rok w 2006 r.).
Powtarzanie się czasu trwaniaJeżeli czas trwania jest powtarzalne, jeden powyżej notacji z literą R . Przykład: R / PT01H oznacza „co godzinę”.
Ukośnik „/” umożliwia dodawanie po R wskazać (opcjonalnie) liczby powtórzeń. Dlatego R5 / PT01: 30 oznacza „pięć wystąpień oddalonych od siebie o półtorej godziny”.
Czas między każdym wystąpieniem można określić wszystkimi metodami wymienionymi powyżej. (Poprzez wskazanie dwóch dat lub użycie symbolu P dla odstępów czasu lub czasu trwania; z lub bez wskazania daty rozpoczęcia lub zakończenia).
R12 / 1985-04-12T23: 20: 50 / P1Y2M oznaczałoby „12 wystąpień oddzielonych od siebie rokiem i dwoma miesiącami, począwszy od pierwszego 12 kwietnia 1985 r. O godzinie 23:20 i pięćdziesiąt sekund”
Zalety tej standaryzacji są następujące: