Prawie każda metoda ISO w sieci upuszcza informacje o strefie czasowej, stosując konwersję do czasu ulu „Z” (UTC) przed wyprowadzeniem ciągu. Natywna funkcja .toISOString () przeglądarki również usuwa informacje o strefie czasowej.
To odrzuca cenne informacje, ponieważ serwer lub odbiorca mogą zawsze przekonwertować pełną datę ISO na czas Zulu lub dowolną strefę czasową, której potrzebuje, jednocześnie otrzymując informacje o strefie czasowej nadawcy.
Najlepszym rozwiązaniem, z jakim się zetknąłem, jest użycie biblioteki javascript Moment.js i użycie następującego kodu:
Aby uzyskać bieżący czas ISO z informacjami o strefie czasowej i milisekundach
now = moment().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T20:11:11.234+0100"
now = moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSSZZ")
// "2013-03-08T19:11:11.234+0000"
now = moment().utc().format("YYYY-MM-DDTHH:mm:ss") + "Z"
// "2013-03-08T19:11:11Z" <- better use the native .toISOString()
Aby uzyskać czas ISO natywnego obiektu JavaScript Date z informacjami o strefie czasowej, ale bez milisekund
var current_time = Date.now();
moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ")
Można to połączyć z Date.js, aby uzyskać funkcje takie jak Date.today (), których wynik można następnie przekazać do momentu.
Tak sformatowany ciąg daty jest zgodny z JSON i dobrze nadaje się do zapisania w bazie danych. Python i C # wydają się to lubić.