以yyyy-MM-dd HH:mm:ss“格式转换日期时间

时间:2013-01-27 18:18:26

标签: java sql hibernate jpql

您好我是java和JPQL的新手。这里我在我的GET方法的url中传递dateTime作为参数。我想要的是我希望用户应该以“yyyy-MM-dd HH:mm:ss”格式传递日期时间。但是现在,当我通过日期时间时,它与当前日期时间一致。我希望它应该比较预订按用户传递的日期和时间。  这是我的方法和查询。请帮帮我..

@GET
    @Path("/getReservationByUserIdAndTypeAndDateTime/{userid}/{type}/{dateTime}")
    public List<Reservation> getReservationByAndUserIdAndTypeAndDateTime(@PathParam("userid") int uid, @PathParam("type") int tid,@PathParam("dateTime")String dateTime) {
        CriteriaBuilder builder = em.getCriteriaBuilder();

        //Timestamp dateTime = new Timestamp(System.currentTimeMillis());
     dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());

        //System.out.println("dateTime-"+dateTime);

        CriteriaQuery<Reservation> criteria = builder.createQuery(Reservation.class);
        Root<Reservation> r = criteria.from(Reservation.class);
        TypedQuery<Reservation> query = em.createQuery(
            criteria.select(r).where(new Predicate[]{
                    builder.equal(r.get(Reservation_.usersId), uid), 
                    builder.equal(r.get(Reservation_.reservationsType), tid),
                    builder.greaterThanOrEqualTo(
                           builder.concat(r.get(Reservation_.date), r.get(Reservation_.time)), dateTime.toString())}));
        return query.getResultList();
    }

2 个答案:

答案 0 :(得分:3)

使用此方法非常简单

String myDateFormat = "yyyy-MM-dd HH:mm:ss";

public String formatDate(Date date)
{
    SimpleDateFormat customFormat = new SimpleDateFormat(myDateFormat );
    customFormat.setLenient(false);
    return customFormat.format(date);
}

您可以通过new Date('your date in String')

将字符串中的日期转换为日期对象

答案 1 :(得分:-1)

尝试

dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Integer.parseInt(dateTime));

而不是

dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());

用户传递的日期时间应为unix时间戳。