Почти каждый метод to-ISO в сети сбрасывает информацию о часовом поясе, применяя преобразование к «Z» ulu time (UTC) перед выводом строки. Родной .toISOString () браузера также удаляет информацию о часовом поясе.
Это исключает ценную информацию, так как сервер или получатель всегда могут преобразовать полную дату ISO в время Zulu или в любой часовой пояс, который ему требуется, при этом получая информацию о часовом поясе отправителя.
Лучшее решение, с которым я столкнулся, - это использовать библиотеку 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 Date с информацией о часовом поясе, но без миллисекунд
var current_time = Date.now();
moment(current_time).format("YYYY-MM-DDTHH:mm:ssZZ")
Это может быть объединено с Date.js для получения функций, таких как Date.today (), результат которых затем может быть передан в данный момент.
Строка даты, отформатированная таким образом, является JSON-компилятором и хорошо подходит для хранения в базе данных. Python и C #, похоже, это нравится.