Java日期持续时间验证
我将有两个日期,即开始日期和结束日期。我必须计算两个日期之间的持续时间,然后应检查以下3种情况下的持续时间- 如果持续时间等于1年+5天,则打印Hello。 如果持续时间小于1年-5天,则打印Hi。 如果持续时间大于1年+5天,则打印Hi。 如果需要更多信息,请帮助我并让我知道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
我更喜欢使用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天,你就没有考虑闰年。一年加五天的时间长短取决于它是否是闰年。谢谢你,杰斯珀。你的解决方案真的很有帮助。用我的期末课程更新问题部分。