您好我是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();
}
答案 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时间戳。