如何在Hyperledger Composer查询语言中获取当前日期

时间:2017-08-23 12:26:57

标签: hyperledger-composer

如何将DateTime数据类型与超级分类编辑器中的当前日期进行比较?

是否有可用的内置功能?

2 个答案:

答案 0 :(得分:3)

// get a date object
var now = new Date();

DateTime通常定义如下。

YYYY-MM-DDTHH:MM:SS

比较Javascript中日期的最简单方法是首先将DateTime值转换为Date对象,然后比较这些日期对象。

你可以使用

dates.compare(a,b) // where a and b are date objects 

var dateString = "2050-01-02T11:42Z"; //DateTime
var myDate = new Date(dateString);

var now = new Date();
if (now < myDate) {
     document.write('myDate is in the future');
}
else
{
    document.write('myDate is NOT in the future');
}

或看到这里

Compare two dates with JavaScript

显然,在事务处理器中执行new Date()并不合适,因为它被部署到运行时区块链,并且知道在被认可/执行后对其进行评估的时间是任何人的猜测。

答案 1 :(得分:1)

是。鉴于原始答案的原则仍然存在 - 这是如何将其作为参数传递的示例。

var now = new Date();

now.setMinutes(10); //将日期设置为您要查询的时间(示例)

var q1 = businessNetworkConnection.buildQuery(&#39; SELECT org.hyperledger.composer.system.HistorianRecord&#39; +                                                 &#39; WHERE(transactionTimestamp&gt; _ $ justnow)&#39;);

return businessNetworkConnection.query(q1,{justnow:now});

日期时间字符串可以采用简化的ISO 8601格式。例如,&#34; 2016-10-10&#34; (仅限日期)或&#34; 2017-10-10T14:48:00&#34; (日期和时间)可以传递并与Composer DateTime字段进行比较。

另见 - https://hyperledger.github.io/composer/business-network/query.html