Как я могу проверить google.protobuf.Timestamp в Javascript?

Использование файла прото из API, созданного в Scala. Мой код находится в JS, пытается проверить мой код и получает следующую ошибку:

AssertionError [ERR_ASSERTION]: invalid return value: post[0].lastPublishedDate: Date expected

Пробовал и не работал:

  1. lastPublishedDate: {seconds: <date>, nano: <date>}с датой, являющейся датой toISOString(), как упоминалось в документации ( https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/timestamp.proto)
  2. lastPublishedDate: new Date().toISOString()
  3. Просто положить 2019-02-18T14:18:45.346Z (это то, что API, кажется, возвращает, когда я это называю) в качестве даты.

Ничто, кажется, не работает для меня.

Единственная другая ссылка на это, которую я мог найти в Интернете, это: https://github.com/dcodeIO/protobuf.js/issues/437 и она также кажется нерешенной.

Кому-нибудь удалось поработать с google.protobuf.Timestamp в JS?

1 ответ

Вы можете использовать эту функцию для генерации даты на основе этого google/protobuf/timestamp.proto

const getDate = ()=>{
    if (window.proto) {
        const proto = window.proto;
        const timeMS = Date.now();
        const timestamp = new proto.google.protobuf.Timestamp()
        timestamp.setSeconds(timeMS / 1000);
        timestamp.setNanos((timeMS % 1000) * 1e6);
        return timestamp;
    }
}

ИЛИ вы также можете использовать это:

const date = new proto.google.protobuf.Timestamp()
date.fromDate(new Date())

и для получения даты JS вы можете использовать toDate() метод от proto.google.protobuf.Timestamp

надеюсь, это поможет вам.

Так что, видимо, это была обычная дата JS (new Date()) вроде можно было бы разобраться из сообщения об ошибке...

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