Drupal 10中如何用计算Twig字段计算两个日期字段的差值?
Drupal 10 Webforms 日期字段差值计算方案
直接用{{ date1 - date2 }}返回0的原因是:Webform的日期字段值默认是字符串格式,Twig无法直接对字符串执行减法运算,会被错误转换为数值导致结果异常。
以下是两种可行的解决方法:
方法1:通过时间戳计算天数差
在计算Twig字段中使用以下代码(替换date_start和date_end为你的日期字段机器名):
{% if date_start and date_end %} {% set start_ts = date(date_start).timestamp %} {% set end_ts = date(date_end).timestamp %} {{ (end_ts - start_ts) // 86400 }} {% else %} 请填写完整日期 {% endif %}
- 逻辑:用
date()过滤器将日期字符串转为DateTime对象,提取Unix时间戳(秒数),差值除以一天的秒数(86400),通过整数除法得到天数差。 - 优势:能处理跨年份、月份的日期计算,结果为正/负数可区分日期先后。
方法2:使用DateTime对象的diff方法
更直观的方式是利用Twig的日期对象方法:
{% if date_start and date_end %} {% set date_diff = date(date_end).diff(date(date_start)) %} {{ date_diff.days }} {% else %} 请填写完整日期 {% endif %}
- 逻辑:
diff()方法返回包含日期差信息的对象,直接取days属性即可得到天数差。 - 注意:如果结束日期早于开始日期,
days会返回负数,可根据需求添加绝对值处理{{ date_diff.days|abs }}。
内容的提问来源于stack exchange,提问作者T126TR
相关产品推荐
相关产品推荐

