使用 QueryBuilder API 在 AEM 中从 jcr:页面的属性中提取带有时间戳的日期,可以按照以下步骤进行操作:
- 创建一个 QueryBuilder 对象:QueryBuilder queryBuilder = resourceResolver.adaptTo(QueryBuilder.class);
- 创建一个 Query 对象,并设置查询条件:String path = "/content/mysite"; // 设置查询路径
String type = "cq:Page"; // 设置节点类型
String property = "jcr:created"; // 设置属性名称
String value = "yyyy-MM-dd'T'HH:mm:ss.SSSX"; // 设置时间戳格式
String operation = "like"; // 设置匹配操作符
String expression = value + "%"; // 设置匹配表达式
PredicateGroup predicateGroup = new PredicateGroup();
predicateGroup.add(PredicateGroup.create(property).set(operation, expression));
Query query = queryBuilder.createQuery(predicateGroup, resourceResolver.adaptTo(Session.class));
query.setStart(0);
query.setHitsPerPage(10);
query.setPath(path);
query.setNodeType(type);
- 执行查询并获取结果:SearchResult result = query.getResult();
for (Hit hit : result.getHits()) {
ValueMap properties = hit.getProperties();
Calendar timestamp = properties.get(property, Calendar.class);
Date date = timestamp.getTime();
// 进一步处理日期
}
在上述代码中,我们使用 QueryBuilder API 创建了一个查询对象,并设置了查询路径、节点类型、属性名称、时间戳格式以及匹配操作符。然后执行查询并遍历结果,从每个结果中提取属性值,并将时间戳转换为日期对象进行进一步处理。