Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java比较日期_Java_Date - Fatal编程技术网

用Java比较日期

用Java比较日期,java,date,Java,Date,我对比较两个日期有问题。我试图将它与Date.after()方法进行比较,将它放在Calendar对象中,然后进行比较,但仍然无法正常工作。 例如,当我把startDate作为2017-01-26和endDate作为2017-01-28时,它显示startDate在后面!但当我把startDate作为2017-01-23之前的日期(例如2017-01-01)和endDate作为2017-01-28时,一切都正常了 我有两个这样的微调器: SimpleDateFormat model = new

我对比较两个日期有问题。我试图将它与Date
.after()
方法进行比较,将它放在Calendar对象中,然后进行比较,但仍然无法正常工作。 例如,当我把
startDate
作为2017-01-26和
endDate
作为2017-01-28时,它显示
startDate
在后面!但当我把
startDate
作为2017-01-23之前的日期(例如2017-01-01)和
endDate
作为2017-01-28时,一切都正常了

我有两个这样的微调器:

SimpleDateFormat model = new SimpleDateFormat("dd-MM-yyyy");
spinnerStartDate = new JSpinner(new SpinnerDateModel());
spinnerStartDate.setEditor(new JSpinner.DateEditor(spinnerStartDate, model.toPattern()));
spinnerStartDate.setModel(new SpinnerDateModel(new Date(1485039600000L), null, null, Calendar.DAY_OF_YEAR));
panel.add(spinnerStartDate);

SimpleDateFormat model2 = new SimpleDateFormat("dd-MM-yyyy");
spinnerEndDate = new JSpinner(new SpinnerDateModel());
spinnerEndDate.setEditor(new JSpinner.DateEditor(spinnerEndDate, model2.toPattern()));
spinnerEndDate.setModel(new SpinnerDateModel(new Date(1485039600000L), null, null, Calendar.DAY_OF_YEAR));
panel.add(spinnerEndDate);
以及两种获取日期的方法:

 public Date getStartDate(){
          return (Date)spinnerStartDate.getValue();
   }
  public Date getEndDate(){
       return (Date)spinnerEndDate.getValue();
   }
和听众

public void addFilterListener(ActionListener act){
    btnFilter.addActionListener(act);
}
然后我有控制器,我必须检查,如果第二次约会不是在第一次之后

    class FilterListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {

            Date date1 = View.getStartDate();
            Date date2 = View.getEndDate();

                if(date1.after(date2)){
                    System.out.println("date1 is after! change it!");
                    System.out.println("Date 1 " + date1);
                    System.out.println("Date 2 " + date2);
                }
                else {
                    System.out.println("No");
                }
     }
 }

我不知道怎么了。在代码的其他部分中,此比较在相同的基础上正常工作

您之所以将
2017-01-22
作为日期,是因为以下两行:

spinnerStartDate.setModel(new SpinnerDateModel(new Date(1485039600000L), null, null, Calendar.DAY_OF_YEAR));

spinnerEndDate.setModel(new SpinnerDateModel(new Date(1485039600000L), null, null, Calendar.DAY_OF_YEAR));
这是因为
1485039600000L
2017年1月22日
以毫秒为单位,下面的代码显示:

public static void main(String[] args) throws Exception {
    Date date = new Date(1485039600000L);
    System.out.println(date);
}
现在,如果希望它显示当前日期,则需要使用
date
类的
no-argument构造函数
,即
setModel
语句将更改为以下内容:

spinnerStartDate.setModel(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_YEAR));

spinnerEndDate.setModel(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_YEAR));

你可以添加
System.out.println(“日期1”+date1)
System.out.println(“日期2”+date2)编码到你的比较方法中,看看你得到了什么日期?开始日期2016-01-26和结束日期2016-01-29<编码>日期1的输出在后面!改变它!日期1周四2017年1月26日00:00:00 CET日期2周日2017年1月22日00:00:00 CET我不知道,为什么第二个日期是1月22日?!你能发布调用这个方法的代码吗?似乎传递了不正确的日期。在帖子中添加了更多代码。这就是全部。我知道传递的日期不正确(enddate),但这就是此方法中的全部代码。
View
是类的对象吗?或者
startDate
endDate
是静态成员?需要检查哪些方法设置了这两个值,可能以前的值没有被删除,它仍然返回以前的值?再次感谢您的帮助