Проверка продолжительности даты Java - PullRequest
0 голосов
/ 10 февраля 2012

У меня будет 2 даты, то есть даты начала и окончания.Мне нужно рассчитать продолжительность между обеими датами, а затем проверить эту продолжительность для всех ниже 3 условий -

  1. Если продолжительность равна (1 год + - 5 дней), то выведите «Здравствуйте..
  2. Если продолжительность меньше, чем (1 год -5 дней), выведите «Hi».
  3. Если продолжительность больше (1 год + 5 дней), тогдапечать "Привет".

Пожалуйста, помогите мне и дайте мне знать, если потребуется дополнительная информация.

Я предпочел использовать joda time 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");
        }
    }
}

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 10 февраля 2012

Используйте следующий класс, в котором есть метод 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));
 }
 } 

Я не думаю, что вам больше понадобится помощь, если вы не знаетеСколько дней в году, и вы не знаете, как использовать if...else блоков в Java.

0 голосов
/ 13 февраля 2012

Я предпочел использовать joda time 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");
               }

}

}

Вот моя программа, которая соответствует моим ожиданиям -

import org.joda.time.DateTime;

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);
    DateTime start=d1.plusYears(1).minusDays(5);
    DateTime end=d1.plusYears(1).plusDays(5);
    if(d2.isBefore(start)||d2.isAfter(end)){
        System.out.println("HI");
    }else{
        System.out.println("HELLO");
    }

}

}

0 голосов
/ 10 февраля 2012

Вы должны следить за тем, чтобы продолжительность 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...