2015-02-03 5 views
1

Я сохраняю объект DateTimeOffset в MongoDB. Драйвер Mongo выполняет сериализацию DateTimeOffset следующим образом..Net Ticks to ISO 8601 Формат даты с использованием JavaScript

[635519027206007023,0] 

Мне нужно его преобразовать в формат ISO 8601 следующим образом.

2015-02-02T01:43:19+05:00 

Преобразование может быть легко выполнено с помощью .NET. Но в этом случае я получаю DateTimeOffset непосредственно из MongoDB с использованием JavaScript (Node.js). Следовательно, я получаю массив длинного.

Как преобразовать массив longs [635519027206007023,0] в ISO 8601 формат 2015-02-02T01:43:19+00:00 используя JavaScript?

ответ

2

Эпоха для DateTimeOffset типа 0000-01-01, а эпоха для дат Javascript - 1970-01-01.

Значение DateTimeOffset указывает на значение даты 1970-01-01 - 621355968000000000, поэтому вы можете просто вычесть это значение из значения, чтобы преобразовать его в эпоху Javascript.

Ticks in DateTimeOffset - 1/10000000 секунд, а тики в датах Javascript - 1/1000 секунд, поэтому разделите значение на 10000, чтобы преобразовать его в отметки даты Javascript.

Таким образом, чтобы получить дату Javascript от DateTimeOffset клещи:

new Date((date[0] - 621355968000000000)/10000) 

Затем вы можете использовать toISOString method преобразовать дату к ISO8601 строке.