samanzamani / PersianDate

Persian date for android
BSD 3-Clause "New" or "Revised" License
327 stars 40 forks source link

Wrong result in date.after(PersianDate); method #27

Closed lvl4fi4 closed 3 years ago

lvl4fi4 commented 4 years ago

im running following test:

    String Date1 = "1398/05/20";
    String Date2 = "1398/07/20";

    assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/06/1"));
    assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, Date1));
    assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, Date2));
    assertFalse(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/04/1"));
    assertFalse(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/09/1"));`

    public static boolean isInRangeDate(String date1Range, String date2Range, String dateVal) {
    PersianDate date1 = stringToPersianDate(date1Range);
    PersianDate date2 = stringToPersianDate(date2Range);
    PersianDate date = stringToPersianDate(dateVal);
    boolean _1 = date.after(date1);
    boolean _2 = date.before(date2);
    boolean _3 = date.equals(date1);
    boolean _4 = date.equals(date2);

    return (date.after(date1) && date.before(date2) || date.equals(date1) || date.equals(date2));
}

     private static PersianDate stringToPersianDate(String date) {
    int day = Integer.parseInt(date.split("/")[2]);
    int month = Integer.parseInt(date.split("/")[1]);
    int year = Integer.parseInt(date.split("/")[0]);
    PersianDate persianDate = new PersianDate();
    persianDate.initJalaliDate(year, month, day);
    return persianDate;
    }

boolean _1 _2 _3 _4 are false in the first test! am i doing the compare wrong or dose this method returns wrong result? is date.after(date1); ? is this date "1398/06/1" is after this date "1398/05/20" ? true! so there is something wrong

samanzamani commented 3 years ago

Test v1.0