Я работаю над Игровая площадка для композиторов Hyperledger и хочу указать только время в поле DateTime, полностью пропуская дату. Но всякий раз, когда я пытаюсь создать актив, каждый раз получаю ошибку RangeError: Invalid time value.
Я попытался задать значение по умолчанию для переменной в файле модели в некоторых вариантах следующего примера, но это тоже не сработало.
o DateTime dispatchTime default = "T06:18:42.716Z"
Мне, должно быть, не хватает очевидной вещи, поскольку это стандартный формат ISO-8601, но я не смог найти точное решение, чтобы заставить его работать именно в Hyperledger Composer. Заранее спасибо.





Нет, вы не могу храните только время в переменной DateTime.
Как описано в документации, он будет принимать только экземпляр времени, совместимый с ISO-8601, с дополнительным часовым поясом и смещением UTZ.
Вы можете вручную преобразовать его только в формат времени во время ответа.
Для получения дополнительных сведений о типах примитивов Hyperledger перейдите по ссылке ниже:
https://hyperledger.github.io/composer/latest/reference/cto_language
Вы получаете ошибку invalid time, потому что вы не могу хранить только время в своей переменной dispatchTime, поскольку это Формат даты и времени ISO-8601. Вы можете это проверить
Но также, если вы хотите сохранить время Только, вы можете преобразовать его в одну из функций процессора транзакций в вашем файле logic.js следующим образом:
tx.assetObject.dispatchTime = new Date().toISOString().split(/T/)[1];
Надеюсь, это поможет!
вы не можете хранить только время в
DateTime(поэтому он называется DateTime) - вы можете хранить время в виде строки? В противном случае это что-то вроде:new Date(); var mydate = d.toISOString();См. Также en.wikipedia.org/wiki/ISO_860 en.wikipedia.org/wiki/ISO_8601