Получение даты в формате ISO-8601 с использованием Javascript в хранимой процедуре Cosmos DB - PullRequest
0 голосов
/ 19 февраля 2019

Я пишу хранимую процедуру для Cosmos DB.Я не очень знаком с JavaScript.

Я пытался получить ISO-8601 в формате Date, но пока безуспешно.Согласно некоторым документам , которые я обнаружил, я должен был просто иметь возможность позвонить toISOString на Date.Это не работает (ошибка «Объект не поддерживает свойство или метод»).

Поэтому я нашел этот совет , чтобы определить прототип самостоятельно:

function storedProcedure(arg) {
    if (!Date.prototype.toISOString) {
        // Here we rely on JSON serialization for dates because it matches
        // the ISO standard. However, we check if JSON serializer is present
        // on a page and define our own .toJSON method only if necessary
        if (!Date.prototype.toJSON) {
            var toISOString = function (date) {
                function f(n) {
                    // Format integers to have at least two digits.
                    return n < 10 ? '0' + n : n;
                }

                return date.getUTCFullYear() + '-' +
                    f(date.getUTCMonth() + 1) + '-' +
                    f(date.getUTCDate()) + 'T' +
                    f(date.getUTCHours()) + ':' +
                    f(date.getUTCMinutes()) + ':' +
                    f(date.getUTCSeconds()) + 'Z';
            };
        }

        Date.prototype.toISOString = Date.prototype.toJSON;
    }

    var now = Date.now();
    var iso8601 = now.toISOString();
    console.log("ISO " + iso8601);

    // other code
}

Однако это все еще завершается неудачно с:

Object doesn't support property or method 'toISOString'

Я попытался удалить прототип целиком и просто использовать функцию, которая вместо этого берет Date.Однако затем произошла та же ошибка, но для других участников, таких как getUTCFullYear.

Я попытался также позвонить getSeconds, и это не удалось по той же причине.В отчаянии я попытался перечислить свойства объекта с помощью функции getKeys в этом ответе , и он дал мне пустой список.

Что здесь происходит?Как я могу просто получить ISO-8601 в формате Date, представляющий текущее время в UTC?

1 Ответ

0 голосов
/ 19 февраля 2019

ОК, похоже, это потому, что я использовал Date.now() за эти документы вместо new Date() за этот случайный результат Google .

У меня естьпонятия не имею, почему это важно или как я мог знать это (объяснения приветствуются), но это было основной причиной.Сейчас мне даже не нужен прототип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...