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 startDate = new Date(); //this is from database value Date todayDate = new Date(); //this is created locally System.out.println(rsv.startDate); System.out.println("Today date:"+todayDate); if(rsv.startDate.equals(

我对日期实例有问题。我做了以下工作:

Date startDate = new Date(); //this is from database value
Date todayDate = new Date(); //this is created locally
    System.out.println(rsv.startDate);
    System.out.println("Today date:"+todayDate);
    if(rsv.startDate.equals(todayDate)){
        System.out.println("Equal!");
    }else if(rsv.startDate.after(todayDate)){
        System.out.println("After!!");
    }else{
        System.out.println("Before!!!!");
    }
现在,当我尝试比较它们时,唯一的问题是Date实例将有时间,所以当我检查它们是否相等时,它可能不会给出与我期望的相同的结果,而是更少或更多。我测试了以下内容:

Date startDate = new Date(); //this is from database value
Date todayDate = new Date(); //this is created locally
    System.out.println(rsv.startDate);
    System.out.println("Today date:"+todayDate);
    if(rsv.startDate.equals(todayDate)){
        System.out.println("Equal!");
    }else if(rsv.startDate.after(todayDate)){
        System.out.println("After!!");
    }else{
        System.out.println("Before!!!!");
    }
虽然两者都是2月5日,但它显示的是之前的产量,而不是相等的产量。我该怎么补救呢?我知道SimpleDataFormat,但这会将日期更改为字符串


谢谢,

您可以从当前日期对象中删除时间:

   Date date = new Date();

   Calendar dCal = Calendar.getInstance();
   dCal.setTime(date);
   dCal.set(Calendar.HOUR_OF_DAY, 0);
   dCal.set(Calendar.MINUTE, 0);
   dCal.set(Calendar.SECOND, 0);
   dCal.set(Calendar.MILLISECOND, 0);

   date = dCal.getTime();
然后进行比较

或者,如果您的项目需要更多的日期/时间处理能力,您可以使用joda日期时间库:


MidnightDate类适用于此特定用例:

您可以从当前日期对象中去掉时间:

   Date date = new Date();

   Calendar dCal = Calendar.getInstance();
   dCal.setTime(date);
   dCal.set(Calendar.HOUR_OF_DAY, 0);
   dCal.set(Calendar.MINUTE, 0);
   dCal.set(Calendar.SECOND, 0);
   dCal.set(Calendar.MILLISECOND, 0);

   date = dCal.getTime();
然后进行比较

或者,如果您的项目需要更多的日期/时间处理能力,您可以使用joda日期时间库:


MidnightDate类适用于此特定用例:

Date
同时包含日期和时间。Equals()仅在时间相同时返回true。要进行比较,需要确保两个
Date
对象的时间部分相同(例如全部设置为零)。

Date
同时包含日期和时间。Equals()仅在时间相同时返回true。要进行比较,需要确保两个
Date
对象的时间部分相同(例如全部设置为零)。

对于日期操作,可以使用Joda实用程序。以下代码片段显示比较两个日期:

DateTime one = new DateTime(original-Date-1);
DateTime two = new DateTime(original-Date-2);

LocalDate oneDate = one.toLocalDate();
LocalDate twoDate = two.toLocalDate();

return oneDate.compareTo(twoDate);

您可以看到:

对于日期操作,您可以使用Joda实用程序。以下代码片段显示比较两个日期:

DateTime one = new DateTime(original-Date-1);
DateTime two = new DateTime(original-Date-2);

LocalDate oneDate = one.toLocalDate();
LocalDate twoDate = two.toLocalDate();

return oneDate.compareTo(twoDate);

您可以看到:

我在程序的其他部分使用了Joda time,但不打算在本模块中使用它:)谢谢您的推荐。将尝试上面的代码:)我在程序的其他部分使用了Joda time,但不打算在本模块中使用它:)谢谢您的推荐。将尝试上面的代码:)您是否正在尝试确定两个日期是否在同一天?( ). 那么SimpleDateFormat有什么问题吗?您是否正在尝试确定两个日期是否在同一天?( ). 那么SimpleDataFormat有什么问题?