如何使用querybuilder api aem从页面的jcr:property中提取日期加时间戳的年份

如何使用querybuilder api aem从页面的jcr:property中提取日期加时间戳的年份,aem,query-builder,Aem,Query Builder,我在第viz页上有两个过滤器。年份和类别。基于此过滤器,我需要从存储库中检索页面并在页面上显示。我正在使用querbuilder api在页面列表的页面属性中搜索“年份和类别”属性来获取页面。但是,我在页面列表的页面属性中有一个日期属性,需要从中比较查询的年份筛选器。但filter=year的格式为“2017”,date=timestamp的格式为“2017-09-18T01:15:00.000+05:30”。那么,如何比较页面属性中的年份过滤器和日期,通过查询获取这些特定页面呢 代码片段 if

我在第viz页上有两个过滤器。年份和类别。基于此过滤器,我需要从存储库中检索页面并在页面上显示。我正在使用querbuilder api在页面列表的页面属性中搜索“年份和类别”属性来获取页面。但是,我在页面列表的页面属性中有一个日期属性,需要从中比较查询的年份筛选器。但filter=year的格式为“2017”,date=timestamp的格式为“2017-09-18T01:15:00.000+05:30”。那么,如何比较页面属性中的年份过滤器和日期,通过查询获取这些特定页面呢

代码片段

if (StringUtils.isNotBlank(year)) {
    map.put("3_property", "year");
    map.put("3_property.value", 2017);
}
财产

您可以使用来实现所需的结果。您可以执行简单的字符串连接来设置谓词计算器的上限和下限

因此,在您的情况下,查询将是

map.put("daterange.property", "date"); //Since the property name is date as per your image.
map.put("daterange.lowerBound", year + "-01-01"); //First day of the year
map.put("daterange.upperBound", year + "-12-31"); //Last day of the year

这应该可以得到所需的结果。

DateFormat.Parse(…).getCalendar().get(YEAR)
对您没有帮助吗?Hi Rakhi,但是来自我的页面过滤器的属性是我创建查询的年份(例如2014年),它将比较的页面的页面属性是“2014-09-18T01:15:00.000+05:30”格式。因此,我需要首先从中提取年份,然后在执行查询时将其与我的查询参数进行比较。是的,我给出的查询将列出所有日期在2014年的节点。您不需要手动提取值,然后进行比较。