2015-10-13 31 views
6

Robiłem pracę z analizowaniem łańcuchów datetime dla naszej międzynarodowej aplikacji. Występuje problem z interpretacją, którego nie mogę znaleźć ostatecznej odpowiedzi. Czy łańcuch datetime ISO 8601 bez składnika strefy czasowej powinien być traktowany jako czas lokalny?DateTime ISO 8601 bez komponentu strefy czasowej

Per wikipedia (które nie chcą opierać swoje decyzje biznesowe off):

Jeżeli żadna informacja UTC relacja jest podana z reprezentacją czasu czas przyjmuje się w lokalny czas.

Jednak nie mogę znaleźć dokumentacji pomocniczej za pośrednictwem ISO lub innego ogólnie dostępnego źródła prawdy. Wszystko, co znalazłem, mówi o tym, jak radzić sobie z przesunięciami w czasie lokalnym (np. +/- 0500 itd.). Zakładając, że czas lokalny w takich przypadkach znacznie by mi pomógł, moi użytkownicy mogą przesłać tę samą datę dla wszystkich regionów, bez potrzeby obliczania konkretnego przesunięcia dla każdego regionu.

Na przykład:

2012-01-01T00:00:00 # Convert to local 
2012-01-01T00:00:00Z # Zulu/UTC...don't convert 

Czy istnieje ustanowiony interpretacja dla strefy czasowej mniej ISO 8601 strun?

Odpowiedz

6

Sekcja 4.2.2 normy ISO 8601 podaje przykłady bez oznaczenia TZ z informacją, że są to czasy lokalne. 4.2.4 mówi, że czasy UTC używają oznaczenia "Z". Oczywiście zawsze powstaje pytanie "Czas lokalny gdzie?" ...

+0

Niesamowite, tego właśnie szukałem. Jest kulawy, że dokumentacja ISO nie jest "publicznie dostępna" za darmo, dlatego za pierwszym razem tęskniłem za nią. Niech Bóg błogosławi ludzi, którzy go przesyłają :) W danych wejściowych użytkownika, które określa region, jest nieodłączny atrybut, więc aspekt "gdzie" jest już zajęty. – Devin

0

Bez oznacznika strefy czasowej ciąg datetime będzie interpretowany jako czas lokalny - ale jako czas lokalny dla SERWERA.

Jeśli użytkownicy są w różnych strefach czasowych, daty, które przesyłają bez informacji TZ, będą interpretowane niepoprawnie z lokalnym przesunięciem TZ.