在 Hyperledger 中仅在 DateTime 字段 (ISO-8601) 中指定时间

Specify only Time in DateTime field (ISO-8601) in Hyperledger

我正在处理 Hyperledger Composer Playground 并且只想在 DateTime 字段中指定时间,完全跳过日期。但是每当我尝试创建资产时,每次我都会收到 RangeError: Invalid time value 错误。

我尝试在以下示例的某些变体中为模型文件中的变量提供默认值,但也不起作用。

o DateTime dispatchTime default = "T06:18:42.716Z"

我肯定遗漏了一些明显的东西,因为它是 ISO-8601 标准格式,但找不到确切的解决方案来让它在 Hyperledger Composer 中专门工作。提前致谢。

不,您不能只将时间存储到DateTime变量。

如文档中所述,它只接受兼容 ISO-8601 的时间实例,具有可选时区和 UTZ 偏移量

您可以在响应时手动将其转换为仅时间格式。

有关 Hyperledger Primitive 类型的更多详细信息,请查看下面的 link:

https://hyperledger.github.io/composer/latest/reference/cto_language

您收到 invalid time 错误,因为您 不能仅将时间 存储在 dispatchTime 变量中,因为它是一个 ISO-8601 Date-Time format。你可以看看

但是,如果您只想存储 时间,您可以在 logic.js 文件中的一个事务处理器函数中转换它,如下所示:

tx.assetObject.dispatchTime = new Date().toISOString().split(/T/)[1];

希望对您有所帮助!