.Net использует формат даты ISO 8601 с использованием JavaScript
Я сохраняю объект DateTimeOffset в MongoDB. Драйвер Mongo сериализует DateTimeOffset следующим образом.
[635519027206007023,0]
Мне нужно, чтобы он был преобразован в формат ISO 8601 следующим образом.
2015-02-02T01:43:19+05:00
Преобразование может быть легко сделано с помощью класса.NET DateTimeOffset. Но в этом случае я получаю DateTimeOffset непосредственно из MongoDB, используя JavaScript (Node.js). Следовательно, я получаю массив long.
Как я могу конвертировать массив длинных [635519027206007023,0]
в формат ISO 8601 2015-02-02T01:43:19+00:00
с помощью JavaScript
?
1 ответ
Эпоха для DateTimeOffset
тип 0000-01-01, в то время как для дат Javascript 1970-01-01.
DateTimeOffset
значение тиков для даты 1970-01-01 равно 621355968000000000, так что вы можете просто вычесть это значение из значения, чтобы преобразовать его в эпоху Javascript.
Тики в DateTimeOffset
равно 1/10000000 секунды, а отметки в датах Javascript равны 1/1000 секунды, поэтому разделите значение на 10000, чтобы преобразовать его в отметки даты Javascript.
Итак, чтобы получить дату Javascript от DateTimeOffset
тики:
new Date((date[0] - 621355968000000000) / 10000)
Тогда вы можете использовать toISOString
метод для преобразования даты в строку ISO8601.