【问题标题】:Convert LUIS Datetime V2 to JS Date将 LUIS Datetime V2 转换为 JS 日期
【发布时间】:2017-06-04 16:53:55
【问题描述】:

在 LUIS Sdk 或 Bot Sdk 中是否有内置的辅助方法可以将 LUIS DatetimeV2 实体转换为 JS Date 对象?我看到有些人一直在为 C# 使用 Chronic Parser,但我找不到任何适用于 Nodejs 的东西。

const dt = builder.EntityRecognizer.findEntity(args.intent.entities, 'datetimeV2');
if (dt) {
    // this is just the matching intent, I believe.
    // example intents; today, yesterday, 2/28, 31/5, ...
    // How do I convert this to a valid Date is where I am stuck.
}

【问题讨论】:

    标签: javascript node.js datetime botframework azure-language-understanding


    【解决方案1】:

    要在 NodeJS 中提取 datetimeV2 实体,更具体的是您需要运行:

    const dt = builder.EntityRecognizer.findEntity(args.intent.entities,
        'builtin.datetimeV2.date'); 
    
    const dt_daterange = builder.EntityRecognizer.findEntity(args.intent.entities, 
        'builtin.datetimeV2.daterange');
    

    要创建 Date 对象,您可以在 MDN 上查找它。

    这是 datetimeV2 上的 blogpost,它显示了 LUIS 响应对象中的实体结构。

    要创建一个 Date 对象,您可以将dt.resolution.values[i]['value'] 放入构造函数中,如下所示:

    const dt_obj = new Date(dt.resolution.values[i]['value']);
    

    【讨论】:

    • 谢谢。我不知道IEntity 类型中有resolution 属性。刚刚在stringifying 整个dt 对象时看到它。这就像一个魅力!
    • 谢谢!这个答案对我帮助很大。在我的情况下,我只得到第一个值,所以我这样做了:start_date = new Date(builder.EntityRecognizer.findEntity(intent.entities, 'builtin.datetimeV2.daterange').resolution.values[0].start);
    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2020-02-20
    相关资源
    最近更新 更多