Практично кожен метод ISO в Інтернеті відкидає інформацію про часовий пояс, застосовуючи перетворення в "Z" час улу (UTC) перед виведенням рядка. Народний .toISOString () браузера також відкидає інформацію про часовий пояс.
Це відкидає цінну інформацію, оскільки сервер чи одержувач завжди можуть перетворити повну дату ISO на час зулу чи в той часовий пояс, який він вимагає, отримуючи інформацію про відправника про часовий пояс.
Найкраще рішення, з яким я зіткнувся, - це використання бібліотеки JavaScript Moment.js та використання наступного коду:
Щоб отримати поточний час ISO з інформацією про часовий пояс і мілісекундами
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()
Отримати час ISO власного об’єкта дати JavaScript з інформацією про часовий пояс, але без мілісекунд
var current_time = Date.now();
moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ")
Це можна поєднувати з Date.js для отримання таких функцій, як Date.today (), результат якого може бути переданий до моменту.
Рядок дат, відформатований таким чином, є компілятором JSON і добре піддається збереженню в базі даних. Python та C #, схоже, подобаються.