String(pattern) von SimpleDateFormat auslesen

Status
Nicht offen für weitere Antworten.

H2SO3-

Bekanntes Mitglied
Hallo,

ich bekomme ein SimpleDateFormat und möchte gerne wissen mit welchen Variablen es erzeugt wurde. Hierbei vor allem das pattern also Beim Beispiel

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yy hh:mm aa", Locale.UK);

würde ich gerne wieder irgendwie an den String "dd-MM-yy hh:mm aa" herankommen. Hat hierzu jemand eine Idee?

Unter anderem (aber nicht nur) brauche ich es da ich zumteil Date's habe welche nur aus dem DAtumanteil bestehen. Also zb.
"01-12-08"
hier fehlt nun der Zeitstempel. Ich muss sie dennoch mit dem obigen DateFormat parsen. Nun war meine Idee, wenn ich den String des SimpleDateFormats habe, kann ich rausfinden wie die Zeit gebildet ist und anschließend einen entsprechenden Zeitstempel erzeugen und ihn hinten drann hängen. Also in diesem Fall

"01-12-08" + " 00:00:00 am"

Die Methode ist nicht die schönste, allerdings fällt mir keine bessere ein. Wenn also auch hier jemand eine Idee hjat, währe ich seeeeehr interessiert sie zu höhren 🙂
 
>würde ich gerne wieder irgendwie an den String

toPattern()

über den Calendar kann man direkt an Hour etc rankommen

EDIT:
ach...jetzt kapier ichs erst...anders rum
 
Zuletzt bearbeitet:
>war das als lösung oder als feststellung gemeint?

Feststellung...musste das ganze nochmal lesen. Dachte du wolltest an die einzelnen Zahlen (Tag, Jahr,..)
 
Ne das währe ja einfach. Denke mal der halbe Weg ist ja nun getan.

Muss halt irgendwie aus
"01-12-08" --> "01-12-08 00:00:00 am" machen. Ansonnsten kann ich es ja schlecht parsen.
Nur halt entsprechend dem SimpleDateFormat wenn es also nicht
"dd-MM-yy hh:mm:ss aa"
sondern
"dd-MM-yy hh-mm"
muss es halt zu "01-12-08 00:00" werden
 
mal ein wenig dahingecoded...
Java:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ReverseFormatTester {

	private String pattern;

	public ReverseFormatTester(String pattern) {
		this.pattern = pattern;
	}

	public Date parse(String date) {
		StringBuilder builder = new StringBuilder(this.pattern);

		int lenght = builder.length();
		while (lenght > 0) {
			try {
				SimpleDateFormat df = new SimpleDateFormat(builder.substring(0, lenght--));
				Date result = df.parse(date);
				return result;
			} catch (ParseException e) {
				// ignore
			}
		}
		return null;
	}

	public static void main(String[] args) {
		ReverseFormatTester df = new ReverseFormatTester("dd-MM-yy hh:mm aa");
		String date = "20-07-09 22";
		System.out.println(df.parse(date));
	}

}

(sonst fällt mir im Moment grad auch nix gescheiteres ein)
 
mh, auch ne nette idee. Muss mal schaun, welche Version ich nehme. Erstmal vielen Dank für deine Ideen. 🙂
 
Habe die idee leicht modifiziert übernommen. Habe noch einen test eingebaut, ob das zurückgewandelte Date mit dem input Date identisch ist. Sonnst gibt es Probleme wenn bei einem DatePattern der DAte teil Identisch ist, jedoch der zeitteil unterschiedlich ist.
Java:
    static SimpleDateFormat modifieDateFormat(String date, SimpleDateFormat dateFormat)
    { 
        StringBuilder builder = new StringBuilder(dateFormat.toPattern());
        String testDate = "";
        Date tempDate = null;
        int lenght = builder.length();
        while (lenght > 0) {
            try {
                SimpleDateFormat df = new SimpleDateFormat(builder.substring(0, lenght--));
                tempDate = df.parse(date);
                testDate = df.format(tempDate);
                if(date.equals(testDate))
                { // only if the back formated Date is the same like the inputDate, the parsing worked
	                return df;
                }
                else
                {
                	return null;
                }
            } catch (ParseException e) {
                // ignore
            }
        }
        return null;
    }

hierbei ist mir allerdings aufgefallen, das ich für das neue SimpleDateFormat an sich noch das locale des alten SimpleDateFormat wissen müsste. Jemand ne Idee wie ich da rannkomme?? Kann dazu nichts finden. :-/
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben