You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Watson Conversation中配置@sys-date今日/昨日判断条件?

解决Watson Conversation中判断@sys-date为今日/昨日的问题

我之前也碰到过类似的需求,Watson的日期表达式确实需要注意语法细节——你之前用now().reformatDateTime('dd-MM-yyyy')的方式没生效,核心问题有两个:一是before()方法更适合和DateTime类型对象对比,而非格式化后的字符串;二是你用的日期格式和@sys-date默认返回的格式不匹配。下面是两种可行的实现方案:

方式一:使用日期偏移函数(推荐)

Watson支持对now()进行日期偏移,直接生成今日、昨日的时间范围来匹配,这种方式更稳定,不容易出格式问题:

判断为今日

让@sys-date落在今日的起始到结束时间区间内:

@sys-date >= now().startOfDay() && @sys-date <= now().endOfDay()

判断为昨日

先计算昨日的起始和结束时间,再做范围匹配:

@sys-date >= now().minusDays(1).startOfDay() && @sys-date <= now().minusDays(1).endOfDay()

方式二:通过格式化字符串对比

如果你更习惯用字符串匹配,需要确保两边的日期格式完全一致(@sys-date默认返回格式为yyyy-MM-dd):

判断为今日

将now()格式化后和@sys-date直接对比:

@sys-date == now().reformatDateTime('yyyy-MM-dd')

判断为昨日

先获取昨日的日期再格式化,然后对比:

@sys-date == now().minusDays(1).reformatDateTime('yyyy-MM-dd')

补充:为什么你的原写法没生效?

你使用了dd-MM-yyyy格式,但@sys-date默认返回的是yyyy-MM-dd,两边格式不匹配导致对比失败;另外before()方法如果传入非标准格式的字符串,Watson可能无法正确解析为日期对象,自然达不到预期效果。

测试小技巧

可以在Watson的表达式测试器里单独验证每个函数的输出,比如输入now().startOfDay()查看返回的DateTime值,再和@sys-date的实际返回值对比,能快速定位格式或逻辑问题。

内容的提问来源于stack exchange,提问作者OlliK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:17:26