如何使用 querybuilder api aem 从页面的 jcr:property 中提取带有时间戳的日期年份
how to extract year from date with timestamp from jcr:property of a page using querybuilder api aem
我在页面上有两个过滤器,即。年份和类别。基于此过滤器,我需要从存储库中检索页面并将其显示在页面上。我正在使用 querbuilder api 根据搜索 pages.However 列表的页面 属性 中的 "year & category" 属性来获取页面,我有一个日期 属性我需要从中比较查询的年份过滤器的页面列表的页面属性。但是 filter=year 的格式是“2017”,页面的 pageproperties 中的 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);
}
属性
您可以使用 DateRangePredicateEvaluator 来达到预期的效果。您可以执行简单的字符串连接来设置谓词求值器的上限和下限。
因此在您的情况下,查询将是。
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
这应该会让您获得所需的结果。
我在页面上有两个过滤器,即。年份和类别。基于此过滤器,我需要从存储库中检索页面并将其显示在页面上。我正在使用 querbuilder api 根据搜索 pages.However 列表的页面 属性 中的 "year & category" 属性来获取页面,我有一个日期 属性我需要从中比较查询的年份过滤器的页面列表的页面属性。但是 filter=year 的格式是“2017”,页面的 pageproperties 中的 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);
}
属性
您可以使用 DateRangePredicateEvaluator 来达到预期的效果。您可以执行简单的字符串连接来设置谓词求值器的上限和下限。
因此在您的情况下,查询将是。
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
这应该会让您获得所需的结果。