我使用了两个日历来开始日期和完成如下,
date.Ic.add(Restrictions.between("islemZamani", date1, date2));
然而,此标准的结果包含date1及其之间的结果,不包括date2的结果。我的意思是,它显示 date1< =结果。我想要date1< = results< = date2。所以我尝试了SimpleDateFormat;
String tar1 = new String();
String tar2 = new String();
TimeZone tz = TimeZone.getTimeZone("Europe/Istanbul");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
dateFormat.setTimeZone(tz);
tar1 = dateFormat.format(date1);
tar2 = dateFormat.format(date2);
tar1 = tar1.substring(11, 18) + "000000";
tar2 = tar2.substring(11, 18) + "235959";
c.add(Restrictions.between("islemZamani", tar1, tar2));
现在它给出了NullPointerException。我可以解决这个问题吗?您是否建议使用SimpleDateFormat?任何回复Thanka。
答案 0 :(得分:1)
使用字符串来操作日期过于复杂,可能会出现问题。 仅使用java.util.Date和/或java.util.GregorianCalendar。
试试这个:
GregorianCalendar calendar1 = new GregorianCalendar();
calendar1.setTime(date1);
// Edit the calendar1 here if you want to
GregorianCalendar calendar2 = new GregorianCalendar();
calendar2.setTime(date2);
calendar2.add(GregorianCalendar.DAY_OF_YEAR, 1);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
TimeZone tz = TimeZone.getTimeZone("Europe/Istanbul");
dateFormat.setTimeZone(tz);
String tar1 = dateFormat.format(calendar1.getTime());
String tar2 = dateFormat.format(calendar2.getTime());
c.add(Restrictions.between("islemZamani", tar1, tar2));
但没有痕迹,我不确定这会解决你的问题......
并且,如果可能的话,在限制中使用日期而不是字符串。