.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.

Другие вопросы по тегам