【问题标题】:calender show results like date1<= results<date2日历显示结果,例如第 1 天<= 结果<日期 2
【发布时间】:2013-10-25 14:37:05
【问题描述】:

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

date.Ic.add(Restrictions.between("islemZamani", date1, date2));

但是这个标准的结果有 date1 和它们之间的结果,不包括 date2 的结果。我的意思是,它显示 date1 所以我尝试了这样的 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 不同的建议吗?感谢您的任何回复。

【问题讨论】:

  • 请分享错误/日志跟踪。
  • java.lang.ClassCastException: java.lang.String 无法转换为 java.util.Date
  • This 会帮助你
  • 你的 date1 和 date2 是 java.util.Date 吗?
  • 要避免子字符串,请使用“HH:mm:ss”作为格式

标签: java date calendar simpledateformat


【解决方案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));

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

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

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 2012-11-06
    • 1970-01-01
    • 2014-03-23
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多