Datumskonvertierung

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich hatte ja gestern schon ein Problem mit den Datumangaben.

Folgendes Problem ergibt sich nun.

Ich bekomme zwar das Datumsformat aus der MySQL-Datenbank umgewandelt. (yyyy-MM-dd --> dd.MM.yyyy)


Code:
String pattern2 = "dd.MM.yyyy";
SimpleDateFormat sdf2 = new SimpleDateFormat(pattern2);
String dateS = sdf2.format(k.getErstzulassung());
this.date = dateS;
this.ausgabefeldErstzulassung.setText(date);

Aber der umgekehrt Weg (dd.MM.yyyy --> yyyy-MM-dd) macht mir Probleme. Bekomme bisher immer nur null als Wert.

Mein Ansatz bisher:

Code:
public Date convertFromStringToDate2(String dateString) {
String pattern = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String dateS = sdf.format(dateString)
return dateS;
}

Vielleicht könnt ihr mir ja auf den richtigen Pfad zurückführen.[/code]
 
S

SlaterB

Gast
public Date .. {
..
String dateS = ..;
return dateS;
}

erst denken, dann programmieren,

was möchtest du eigentlich?, z.B.

Code:
class Test
{

    public Test()
        throws ParseException
    {
        Date d = convertFromStringToDate2("2222-10-25");
        System.out.println(d);
    }

    public static Date convertFromStringToDate2(String dateString)
        throws ParseException
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd";);
        return sdf.parse(dateString);
    }

    public static void main(String args[])
        throws Exception
    {
        new Test();
    }
}
Tipp: SimpleDateFormats bei mehrmaliger Benutzung nicht ständig neu erzeugen, sondern in einer statischen Variable speichern
 
Ups, da hatte sich der Fehlerteufel eingeschlichen. :oops:

Der Quelltext lautet natürlich

Code:
public Date convertFromStringToDate2(String dateString) {
String pattern = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
	Date date = sdf.parse(dateString);
	return date;
      }
catch (java.text.ParseException e) {
	return null;
	}
}
 
S

SlaterB

Gast
was willst du jetzt damit sagen?

Code:
class Test
{

    public Test()
    {
        Date d = convertFromStringToDate2("2222-10-25");
        System.out.println(d);
    }

    public Date convertFromStringToDate2(String dateString)
    {
        String pattern = "yyyy-MM-dd";
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        try
        {
            Date date = sdf.parse(dateString);
            return date;
        }
        catch (java.text.ParseException e)
        {
            return null;
        }
    }

    public static void main(String args[])
        throws Exception
    {
        new Test();
    }
}
funktioniert auch,
ist noch irgendeine Frage offen?
 
Also, ich versuche mein Problem mal zu schildern. :D

ich besitze eine Klasse FahrzeugController. Dort befinden sich u.a. die Methoden saveFahrzeug(........, String elz, ....) und convertFromStringToDate(String dateString)

saveFahrzeug bekommt ja wie schon erwähnt u.a. einen String "ezl" übergeben. Den gibt er dann weiter an convertFromStringToDate. Das ganze sieht dann schonmal so aus:

Code:
public void saveFahrzeug(Long ID, ..., String ezl, ...) throws ClassNotFoundException, SQLException {
Connection conn = getConnection();
Statement stmt = conn.createStatement();
Date date = convertFromStringToDate(ezl);
String sqlAbfrage = "UPDATE fahrzeug SET ..., erstzulassung='" + date + "',... WHERE ID = '" + ID + "'";
stmt.executeUpdate(sqlAbfrage);
}

convertFromStringToDate sieht dann wie folgt aus:

Code:
public Date convertFromStringToDate(String dateString) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
	Date date = sdf.parse(dateString);
	return date;
} catch (java.text.ParseException e) {
	return null;
}
}

Nun ergibt sich folgende Fehlermeldung:

Ich habe mir per System.out.println die Werte ausgeben lassen.

convertFromStringToDate bekommt als String z.B. 01.09.2007 und gibt als date dann null aus. Ich weiss nicht warum
 
S

SlaterB

Gast
wein das Format yyyy-MM-dd ist!

01.09.2007 entspricht nicht yyyy-MM-dd, sondern dd.MM.yyyy,
was ist daran bitte nicht zu verstehen?
 
Ok, er springt wenigstens schon mal in den Try-Block. Ich wollte echt aufhören mit solchen Fehlern. Genau denselben habe ich gestern schon mal gemacht :bloed:

Aber er macht trotzdem immer noch was er will

Code:
public Date convertFromStringToDate2(String dateString) {
System.out.println("DateString = EZL: " + dateString);
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
try {
	System.out.println("Sprung in try-Block");
	Date date = sdf.parse(dateString);
	System.out.println("Date2: " + date);
	return date;
} catch (java.text.ParseException e) {
	System.out.println("Sprung in catch-Block");
	return null;
}
}


Die System.out.println, die er mir dann rausschmeißt, lassen irgendwie drauf schließen, dass er wohl nicht richtig prasen möchte:

  • dateString = ELZ: 01.10.2007 OK, kriegt er so auch überliefert
    Sprung in try-Block OK, soll er auch machen
    Date2: Thu Jan 01 00:00:00 CET 1970 Why, was ist mit den letzten 37 Jahren passiert
Irgendwie ärgert mich das Ding schon die ganze Woche. Aber den Fehler hatet ich noch nicht. Ich schwöre. :meld:
 
Also ich glaube ich habe die Fehlerquelle ausgemacht.

die entsprechende Stelle ist
erstzulassung='Sun Sep 18 00:00:00 CEST 1983',

Ist ja auch soweit gut, das soll er ja auch geparst haben. Nur soll hier nicht stehen 'Sun Sep 18 00:00:00 CEST 1983', sondern - um es in die Datenbank einzutragen - 1983-09-18. Wie muss ich den obrigen Code entsprechend verändern?
 
S

SlaterB

Gast
ein Datum kann man mit SimpleDateFormat in einen String umwandeln...,
das richtige Pattern, und dann string = format(date);

ganz neue Sache, was? ;)
 
Status
Nicht offen für weitere Antworten.

Oben