使用条件API仅比较ZoneDateTIme中的小时

时间:2017-04-18 13:29:42

标签: java hibernate criteria

我有实体类Order,其属性为ZonedDateTime deliveryTime。我想提取所有订单,交货时间是每天上午11点到下午2点之间。

builder.between(root.<ZonedDateTime>get("deliveryDate"), ??????, ????)

我可以将结果限制在日期边界,但我的目标是限制交货时间

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用LocalTime#isAfterLocalTime#isBefore

ZonedDateTime now  = ZonedDateTime.now();
// 2017-04-18T14:54:38.567+01:00[Europe/Dublin]

DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("ha");
LocalTime start = LocalTime.parse("11AM",timeFormatter);
LocalTime end = LocalTime.parse("2PM",timeFormatter);

System.out.println(now.toLocalTime().isAfter(start)); // true
System.out.println(now.toLocalTime().isBefore(end)); // false

我希望这会有所帮助。