Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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_Jakarta Ee - Fatal编程技术网

Java日期持续时间验证

Java日期持续时间验证,java,jakarta-ee,Java,Jakarta Ee,我将有两个日期,即开始日期和结束日期。我必须计算两个日期之间的持续时间,然后应检查以下3种情况下的持续时间- 如果持续时间等于1年+5天,则打印Hello。 如果持续时间小于1年-5天,则打印Hi。 如果持续时间大于1年+5天,则打印Hi。 如果需要更多信息,请帮助我并让我知道 我更喜欢使用joda时间api。持续时间的计算非常简单。我有问题把条件与上述3个条件进行验证。无论我在程序中设置的条件是否合适,似乎都是这样 import org.joda.time.DateTime; import o

我将有两个日期,即开始日期和结束日期。我必须计算两个日期之间的持续时间,然后应检查以下3种情况下的持续时间-

如果持续时间等于1年+5天,则打印Hello。 如果持续时间小于1年-5天,则打印Hi。 如果持续时间大于1年+5天,则打印Hi。 如果需要更多信息,请帮助我并让我知道


我更喜欢使用joda时间api。持续时间的计算非常简单。我有问题把条件与上述3个条件进行验证。无论我在程序中设置的条件是否合适,似乎都是这样

import org.joda.time.DateTime;
import org.joda.time.Period;

class Test {

public static void main(String[] args) {
    DateTime d1 = new DateTime(2011, 1, 1, 0, 0, 0, 0);
    DateTime d2 = new DateTime(2012, 1, 1, 0, 0, 0, 0);
    Period p1 = new Period(d1, d2);
     if(p1.getYears()==1 && p1.getMonths()==0 &&
     (p1.getDays()<5||p1.getDays()>5)){
    System.out.println("Hello");
     }else{
    System.out.println("Hi");
               }

}
导入org.joda.time.DateTime; 导入org.joda.time.Period; 课堂测试{ 公共静态无效字符串[]args{ DateTime d1=新的DateTime2011,1,1,0,0,0; DateTime d2=新的DateTime2012,1,1,0,0,0; 周期p1=新周期D1,d2; 如果p1.getYears==1&&p1.getMonths==0&& p1.GetDays 5{ System.out.printlnholl; }否则{ System.out.printlnHi; } } }
提前谢谢

使用以下类,该类具有daysBetween方法,可用于计算天数

 public class DateDifference {
 public static void main(String args[]){
 DateDifference difference = new DateDifference();
 }
 DateDifference() {
 Calendar cal1 = new GregorianCalendar();
 Calendar cal2 = new GregorianCalendar();

 cal1.set(2008, 8, 1); 
 cal2.set(2008, 9, 31);
 System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
 }
 public int daysBetween(Date d1, Date d2){
 return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
 }
 } 

我认为您不再需要帮助,除非您不知道一年中有多少天,并且不知道如何使用java中的if…else块。

您必须注意,1年的持续时间并不总是固定的,因为有些年份有365天,而有些年份有366天。因此,如果不考虑闰年,你不能简单地计算日期之间的天数;这并不总是导致正确的结果

我会这样做:

DateTime start = d1.plusYears(1).minusDays(5);
DateTime end = d1.plusYears(1).plusDays(5);

if (d2.isBefore(start)) {
    System.out.println("Difference between d1 and d2 is less than 1 year - 5 days");
} else if (d2.isAfter(end)) {
    System.out.println("Difference between d1 and d2 is more than 1 year + 5 days");
} else {
    System.out.println("Difference is more than or equal to 1 year + 5 days " +
                       "and less than or equal to 1 year - 5 days");
}

我更喜欢使用joda时间api。持续时间的计算非常简单。我有问题把条件与上述3个条件进行验证。无论我在程序中设置的条件是否合适,似乎都是这样

import org.joda.time.DateTime;
import org.joda.time.Period;

class Test {

public static void main(String[] args) {
    DateTime d1 = new DateTime(2011, 1, 1, 0, 0, 0, 0);
    DateTime d2 = new DateTime(2012, 1, 1, 0, 0, 0, 0);
    Period p1 = new Period(d1, d2);
     if(p1.getYears()==1 && p1.getMonths()==0 &&
     (p1.getDays()<5||p1.getDays()>5)){
    System.out.println("Hello");
     }else{
    System.out.println("Hi");
               }

}

}

最后两个条件似乎很有趣。其中有什么有趣的地方。如果持续时间低于或高于上述时间段,则应执行一些逻辑,否则应执行一些其他逻辑。杜德,我已用程序更新了问题。如果可能,您可以基于该方法提出一些解决方案。我很感激你的迅速反应。再次感谢。如果你只是检查两个日期之间的间隔是否少于360天或超过370天,你就没有考虑闰年。一年加五天的时间长短取决于它是否是闰年。谢谢你,杰斯珀。你的解决方案真的很有帮助。用我的期末课程更新问题部分。