日历显示结果,如日期1< =结果

时间:2013-10-25 14:37:06

标签: java date calendar simpledateformat

我使用了两个日历来开始日期和完成如下,

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。

1 个答案:

答案 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));

但没有痕迹,我不确定这会解决你的问题......

并且,如果可能的话,在限制中使用日期而不是字符串。