为了账号安全,请及时绑定邮箱和手机立即绑定

标准 API:正确的日期格式

标准 API:正确的日期格式

红颜莎娜 2022-01-19 10:38:54
我正在制作一个能够根据某些标准过滤数据的搜索模块。我已经做了以下:public class SearchModuleBean implements Serializable{    @PersistenceContext    EntityManager entityManager;    private Date departureDate;    private Date returnDate;    public List<Flight> search(){        CriteriaBuilder cb = entityManager.getCriteriaBuilder();        CriteriaQuery<Flight> criteriaQuery = cb.createQuery(Flight.class);        Root<Flight> c = criteriaQuery.from(Flight.class);        criteriaQuery.select(c).where(getPredicates(cb, c).toArray(new Predicate[0]));        TypedQuery<Flight> query = entityManager.createQuery(criteriaQuery);        System.out.println(query.getResultList());        return query.getResultList();    }    private List<Predicate> getPredicates(CriteriaBuilder cb, Root<Flight> c) {        List<Predicate> predicates = new ArrayList<>();        predicates.add(cb.equal(c.get(Flight_.departureDate), departureDate));        return predicates;    }}此处不显示 Getters/Setters/Annotations 和导入。我有一个 JSF 页面,其中填写了出发日期和到达日期。然后,在 getPredicates 方法中,我检查离开日期是否等于数据库中的日期。问题是他们有不同的格式,所以他从来没有找到任何东西。
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

我不倾向于使用 Criteria API,可能还有另一种方式,但您可以使用 between 运算符,如下所示:


private List<Predicate> getPredicates(CriteriaBuilder cb, Root<Flight> c, 

           Date departureDate) {


    List<Predicate> predicates = new ArrayList<>();


    //remove time portion from specified date: now dd/mm/yy 00:00

    Date startDate = DateUtils.truncate(departureDate, Calendar.DATE);


    //new date with time initialized to 23:59:59

    Date endDate = DateUtils.addSeconds(DateUtils.addDays(startDate, 1), - 1);


    predicates.add(cb.between(c.get(Flight_.departureDate), startDate, endDate));


    return predicates;

}

DateUtils 是 Commons Lang 中的一个类:


<dependency>

    <groupId>org.apache.commons</groupId>

    <artifactId>commons-lang3</artifactId>

    <version>3.8.1</version>

</dependency>


查看完整回答
反对 回复 2022-01-19
  • 1 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号