Avatar billede casualty Nybegynder
10. april 2003 - 15:33 Der er 3 kommentarer og
2 løsninger

Validering af dato

Jeg har lavet denne metode der validerer en to datoer.

Den tjekker dels om de to strenge Kan parses til datoer og om "fra" datoen er før "til" datoen:

private boolean tjekValidPeriode(String fra, String til)
  {
    //intern metode. tjekker om til/fra datoen
    //er valid og returnerer true eller false.
    SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
    try
    {
      Date DFra = sdf.parse(fra);//Prøver at parse "fra" til en dato
      Date DTil = sdf.parse(til);//prøver at parse "til" til en dato
      if(DFra.before(DTil))//tester om "fra" er før "til"
      {
        return true;
        //Returnerer true hvis datoformat plus rækkefølge er iorden
      }
      else
      {
        return false;
        //returnere "false" hvis "fra" er før "til"
      }
    }
    catch (Exception E)
    {
      return false;
      //returnerer false hvis "fra" eller "til" ikke er et datoformat
    }
  }

Den tjekker for år-år måned-måned dag-dag

det hele fungerer næsten fint men hvorfor konkluderer den at 03-13-32 er en gyldig dato..Jeg fatter det ikke helt...

Mvh Casualty
Avatar billede casualty Nybegynder
10. april 2003 - 15:34 #1
Ps...Jeg kommer først til tasterne efter 20.00 i aften...
Avatar billede repsak Nybegynder
10. april 2003 - 15:47 #2
Date klassen indeholder (desværre) ikke en algoritme som undersøger om datoen faktisk findes i kalenderen... Så det er du nok nødt til selv at lave...
F.eks ved at hente de enkelte data og undersøge om de har en ok værdi. Husk detaljer som skudår m.m.
Avatar billede arne_v Ekspert
10. april 2003 - 16:26 #3
Følgende ser ud til at virke:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class CheckDate {
    private static DateFormat df = new SimpleDateFormat("yy-MM-dd");
    public static boolean isValidDate(String ds) throws ParseException {
        return ds.equals(df.format(df.parse(ds)));
    }
    private static void test(String ds) {
        try {
            System.out.println(ds + " " + isValidDate(ds));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        test("03-04-10");
        test("03-13-32");
        test("03-02-29");
        test("04-02-29");
    }
}
Avatar billede arne_v Ekspert
10. april 2003 - 16:26 #4
Det er næppe high-performance, men det skulle finde invalide
datoer.
Avatar billede casualty Nybegynder
11. april 2003 - 21:00 #5
Tak for hjælpen:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester