如何使用JavaScript测试google.protobuf.Timestamp?

时间:2019-02-24 07:46:47

标签: javascript protocol-buffers protobuf.js

使用来自Scala中创建的API的原始文件。我的代码在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#L115)中所述
  2. lastPublishedDate: new Date().toISOString()
  3. 只需将2019-02-18T14:18:45.346Z(当我调用它时,API似乎会返回)作为日期。

似乎没有什么适合我。

我在网上可以找到的对此的唯一其他参考是: https://github.com/dcodeIO/protobuf.js/issues/437 而且似乎还没有解决。

有人在JS中使用过google.protobuf.Timestamp吗?

2 个答案:

答案 0 :(得分:2)

您可以使用此函数基于此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方法

希望它对您有帮助。

答案 1 :(得分:0)

显然,这是一个常规的JS日期(new Date()),可以从错误消息中找出来...