Datumseingabe im bestimmtem Format

Status
Nicht offen für weitere Antworten.
S

SlaterB

Gast
aber abgucken kann man da schon,
> SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
ist eine wichtige Zeile

falls du ein JTextFeld meinst in Swing -> JFormattedTextField
 

KrokoDiehl

Top Contributor
Es gibt ein JFormattedTextField, darin kannst du fest sagen, wie die Eingabe formattiert sein soll.
Ich persönlich finde das Ding aber sehr restriktiv - aber kenne mich damit vielleicht auch zu wenig aus - und benutze es daher quasi nie.

Ansonsten kannst du über SimpleDateFormat einen String zum Datum umwandeln lassen und wenn das Parsen eben nicht möglich ist, entsprechende Fehlermeldungen bringen. Hierzu ist ein InputVerifier am Eingabefeld zu empfehlen.

Weiterhin gibt es auch einen JSpinner mit einem Datumsmodell als Grundlage.
 

KrokoDiehl

Top Contributor
Was meinst du damit? Was ist T und F?
Wenn der Benutzer eingibt "03.04.2009" dann parst das SimpleDateFormat entsprechend deiner Formatangabe (s. SlaterBs Antwort). D.h. es kommt der dritte April raus. Wenn der Benutzer aber den vierten März meint, ist er selbst schuld :)
 

zarr

Mitglied
Hey du willst art Schablone erstellen hab ich dich da richtig verstanden also das du beim Datum nur dd.mm.yyyy eingeben darfst?

hier ein Beispiel
Java:
public class DateExample1 
{ 
  private static SimpleDateFormat sdFormatter = new SimpleDateFormat("dd.MM.yyyy");
  
  public static void main(String[] args) throws ParseException
  { Date toDay = new Date();
    Date date = sdFormatter.parse("29.02.2000");
    System.out.println(sdFormatter.format(date));
  }
}
 
Zuletzt bearbeitet:

NatGro

Mitglied
mit T und F meinte ich TRUE und FALSE

Also ich kenn nicht direkt auswerte, ob das parsen erfolgreich war, oder?
 

NatGro

Mitglied
Hey du willst art Schablone erstellen hab ich dich da richtig verstanden also das du beim Datum nur dd.mm.yyyy eingeben darfst?

das macht man mit
Java:
static SimpleDateFormat sdFormatter2 = new SimpleDateFormat("dd.MM.yyyy");

System.out.println(sdFormatter2.format(date));

Du machst ja hier eine Ausgabe. Genau so etwas meine ich, allerdings als Eingabe!
 

KrokoDiehl

Top Contributor
Das
Code:
parse()
wirft eine Ausnahme. Damit kannst du sowas wie folgt bauen:
Java:
try
{
    sdf.parse(text);
    return true;
}
catch (ParseException Pexc)
{
    return false;
}

*edit*
SlaterB ist immer schneller :pueh:
 

NatGro

Mitglied
Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;


public class ParseDatum_Test {

	/**
	 * Testprogramm ParseDatum_Test
	 */
	public static void main(String[] args) {
				
		String datum1 = "12.12.2007"; 	// korrektes Datum
		String datum2 = "2007.12.12"; 	// falsches Datum, sollte also Fehler
										// erzeugen
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

		// Teste datum1
		try
		{
		    sdf.parse(datum1);
		    System.out.println("OK");
		}
		catch (ParseException Pexc)
		{
			System.out.println("Nicht OK");
		}
		
		// Teste datum2
		try
		{
		    sdf.parse(datum2);
		    System.out.println("OK");
		}
		catch (ParseException Pexc)
		{
			System.out.println("Nicht OK");
		}
		
	}

}

So habe ich es verstanden bisher.
Ich bekomme jedoch in beiden Fällen ein OK ausgegeben!?


edit: auf JAVA Tags geändert!
 
S

SlaterB

Gast
Java:
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        sdf.setLenient(false);
 

NatGro

Mitglied
Jetzt geht es, aber verstehe ich das richtig?

Nur mit
Java:
sdf.setLenient(false);
wird das datum2 als nicht korrekt ausgewertet?
 

NatGro

Mitglied
Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class ParseDatum_Test {

	/**
	 * Testprogramm ParseDatum_Test
	 */
	public static void main(String[] args) {
				
		String datum1 = "12.12.2007"; 	// korrektes Datum
		String datum2 = "31.12.12232004"; 	// falsches Datum, sollte also Fehler
										// erzeugen
		Date date1 = null;
		Date date2 = null;
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		sdf.setLenient(false);

		// Teste datum1
		try
		{
		    date1 = sdf.parse(datum1);
		    System.out.println("OK");
		    System.out.println("Datum in date1 : " + sdf.format(date1));
		}
		catch (ParseException Pexc)
		{
			System.out.println("Nicht OK");
		}
		
		// Teste datum2
		try
		{
		    date2 = sdf.parse(datum2);
		    System.out.println("OK");
		    System.out.println("Datum in date2 : " + sdf.format(date2));
		}
		catch (ParseException Pexc)
		{
			System.out.println("Nicht OK");
		}
		
	}

}

Hier bekomme ich für das zweite Datum trotzdem ein OK angezeigt.
Aber eigentlich ist es doch keine korrekte Datumseingabe.

Oder habe ich Euch etwas falsch verstanden?
 
S

SlaterB

Gast
wieso nicht, was spricht gegen ein Jahr 12232004, ist doch nicht verboten ;)
yyyy begrenzt die Jahreszahl nicht auf 4, auch wenn es so aussehen könnte,

Jahr < 10.000 kann man glaube ich nicht von SimpleDateFormat begrenzten, müßtest du manuell selber prüfen,

aber es geht tatsächlich noch etwas mehr, weil du so hartnäckig bist:
Java:
    public static void main(String[] args)   {
        String datum2 = "31.12.1223fsdf";
        Date date2 = null;

        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        sdf.setLenient(false);

        ParsePosition pp = new ParsePosition(0);
        date2 = sdf.parse(datum2, pp);
        System.out.println(pp);
        if (pp.getIndex() != datum2.length())   {
            System.out.println("Nicht OK");
        }    else    {
            System.out.println("OK");
            System.out.println("Datum in date2 : " + sdf.format(date2));
        }
    }
auf diesem Weg sogar ganz ohne Exception
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
D Datumseingabe via Dropdown Java Basics - Anfänger-Themen 10
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
K String nach bestimmtem Muster parsen Java Basics - Anfänger-Themen 3
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
D Methoden Collections.shuffle mit bestimmtem Startwert? Java Basics - Anfänger-Themen 8
J Frage zu bestimmtem Ausdruck Java Basics - Anfänger-Themen 2
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
V Methoden Zeilen nach bestimmtem Attribut sortieren Java Basics - Anfänger-Themen 4
D Alle möglichen Stringkombinationen aus bestimmtem Alphabet erzeugen Java Basics - Anfänger-Themen 6
G Zeit auslesen in bestimmtem Format Java Basics - Anfänger-Themen 2
D String lesen und bei bestimmtem Buchstaben stoppen Java Basics - Anfänger-Themen 3
H SimpleDataFormat.format() spuckt falsches Jahr aus (statt 1999 = 3899) Java Basics - Anfänger-Themen 7
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
R Timer Format: 00:00:00 Java Basics - Anfänger-Themen 29
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
A Out.format problem. Java Basics - Anfänger-Themen 3
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M JSON Format Java Basics - Anfänger-Themen 5
B Schleife erstellen mit String Format "001" bis "999" Java Basics - Anfänger-Themen 2
N jodaTime java.lang.IllegalArgumentException: Invalid format Java Basics - Anfänger-Themen 3
V Datentypen Richtiges Format abspeichern Java Basics - Anfänger-Themen 13
F JSON in dokumentierten Format als PDF Java Basics - Anfänger-Themen 3
J Jar Format Java Basics - Anfänger-Themen 4
J Programm im Jar-Format funktioniert nicht richtig Java Basics - Anfänger-Themen 9
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
M Variablen Ausgabe bei System.out.format? Java Basics - Anfänger-Themen 3
M String.format Java Basics - Anfänger-Themen 3
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
L Java Format Strings Java Basics - Anfänger-Themen 2
S String.format Fehler Java Basics - Anfänger-Themen 12
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
C Welches Format gibt Java aus? Java Basics - Anfänger-Themen 5
G String auf Format prüfen Java Basics - Anfänger-Themen 3
A String auf Format überprüfen Java Basics - Anfänger-Themen 7
U String.format (%s, %d) für Nummern Java Basics - Anfänger-Themen 37
L Erste Schritte int-Format Java Basics - Anfänger-Themen 5
N Change date Format Java Basics - Anfänger-Themen 2
T String.format Exception Java Basics - Anfänger-Themen 7
M Simple Date Format Java Basics - Anfänger-Themen 2
C string-Format Java Basics - Anfänger-Themen 6
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
Z System.out.format, Hilfe. Java Basics - Anfänger-Themen 14
H format() - methode Java Basics - Anfänger-Themen 2
L X509 Zertifikat in PKCS#7 Format Java Basics - Anfänger-Themen 2
K Methoden format() mit Point(x, y)-Objekt Java Basics - Anfänger-Themen 14
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
E formartierte Aussgabe mit JTextPane und String.format Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
Spin System.out.format Java Basics - Anfänger-Themen 2
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
D Bytes für WAV Format anpassen Java Basics - Anfänger-Themen 5
K Double Format Java Basics - Anfänger-Themen 4
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
T Umwandeln in .jar - Format Java Basics - Anfänger-Themen 2
B Datumsstring umwandeln in richtiges dd.mm.yyyy format? Java Basics - Anfänger-Themen 2
R String.format() funktioniert nicht Java Basics - Anfänger-Themen 2
G String in Date Format umwandeln Java Basics - Anfänger-Themen 8
M String.format() max. Spaltenbreite Java Basics - Anfänger-Themen 2
G Time-Format-Klasse ode so Java Basics - Anfänger-Themen 2
P e-format Java Basics - Anfänger-Themen 5
H Format des Datums in Logdatei Java Basics - Anfänger-Themen 2
M Festes Format bei der Ausgabe einhalten! Java Basics - Anfänger-Themen 4
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
S Java 1.5 System.out.format() Java Basics - Anfänger-Themen 2
R Alternative zu "Format" in Java 1.4 Java Basics - Anfänger-Themen 3
R Java 5.0 / String.format - Warning Java Basics - Anfänger-Themen 8
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
V String Format Java Basics - Anfänger-Themen 4
B welches format hat java.sql.date? Java Basics - Anfänger-Themen 9
G format für int Java Basics - Anfänger-Themen 10
B Integer format bestimmen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben