Wer kennt sich mit Java aus? Wie erstelle ich eine Variable mit Datentyp datum (siehe unten)?
Ich habe sowas erstellt:
LocalDate aktuelles_Datum = LocalDate.now();
Doch ich muss es in ein Datum datentyp geben da meine Methode nur Datum als datentyp akzeptiert. Das oben ist ja nun ein Objekt, oder? Wie mach ich das?
2 Antworten
Es gibt keinen standardisierten Datentyp namens "Datum".
Es gibt Date, falls das gemeint ist. Das ist aber konzeptionell nicht nur ein Datum, sondern ein Zeitpunkt.
Willst du die momentane Zeit als Date, geht das einfach so:
Date jetzt = new Date();
Wenn du unbedingt dein LocalDate in ein Date umwandeln willst, ist das eine Spur komplizierter: du musst ein Instant daraus machen (dabei eine Zeitzone angeben, hier einfach das Systemdefault):
Instant instant = aktuelles_Datum.atStartOfDay(ZoneId.systemDefault()).toInstant();
und daraus dann ein Date mit from().
Das ist das Standardformat ISO8601. Wenn du ein anderes Format als Text haben willst brauchst du einen DateTimeFormatter dem du übergibst, was du willst. Zum Beispiel die Locale "German".
Kann ich auch mit Date das aktuelle Datum irgendwie deklarieren? Also so wie ich es mit local Date gemacht hab?
Wie oben gesagt, du kannst ein LocalDate in ein Date umwandeln. Aber es muss dir klar sein, dass die beiden Klassen unterschiedliche Dinge ausdrücken. Zumindest musst du eine Zeitzone mitgeben.
Da du die Frage nochmal gestellt hast, bist du mit der bisherigen Antwort anscheinend noch nicht zufrieden.
Ich muss zwar auch ein bisschen raten, was du machen willst, aber ich denke mal, du willst einfach das aktuelle Datum irgendwo anzeigen und brauchst es daher als String.
Um ein LocalDate in einen String umzuwandeln, gibt es hauptsächlich zwei Varianten:
Variante A: Du gibst ein Muster vor, wie in Excel:
var aktuellesDatum = LocalDate.now();
var muster = DateTimeFormatter.ofPattern("dd.MM.yyyy");
System.out.println(aktuellesDatum.format(muster));
Variante B: Du benutzt das Standardformat, was in deinem Betriebssystem eingestellt ist:
var aktuellesDatum = LocalDate.now();
var muster = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
System.out.println(aktuellesDatum.format(muster));
Das mit Instant klappt, aber ich hab das Problem das das Format komisch ist, es spuckt jetzt sowas aus: „2023-07-11T22:00:00Z“. Ich will es aber so haben: „11.07.2023“?