wie liest man ein datum ein?

Status
Nicht offen für weitere Antworten.

talis

Mitglied
irgendwie hab ich mir das so vorgestellt...

Code:
Date d = new Date();  
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
d = br.readLine();

...irgendwie funktioniert es so aber nicht ;-)

zuvor hatte ich eine möglichkeit ausprobiert, dass ich den string ganz normal einlesen ließ, gesplittet und dann

Code:
d = new Date(jahr, monat, tag);

dem Date so zugewiesen habe. das hat aber auch nicht funktioniert.
 
S

stev.glasow

Gast
talis hat gesagt.:
zuvor hatte ich eine möglichkeit ausprobiert, dass ich den string ganz normal einlesen ließ, gesplittet und dann

Code:
d = new Date(jahr, monat, tag);

dem Date so zugewiesen habe. das hat aber auch nicht funktioniert.

zeigst mal den kompletten code oder die fehlermeldung?
 

talis

Mitglied
Code:
private Date dateEinlesen()
	throws NumberFormatException//, IOException
{      
       
       	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       	String zeile = "";
       	
       	try 
       	{
       		zeile = br.readLine();
       	} 
       	catch (IOException e)
       	{

            e.printStackTrace();
       	}
       
       	if (zeile.length() == 6)
       	{
                    String tag = zeile.substring(0, 2);
                    int t = Integer.parseInt(tag);
                    String monat = zeile.substring(2, 4);
                    int m = Integer.parseInt(monat);
                    String jahr = zeile.substring(4, 6);
                    int j = Integer.parseInt(jahr);
       	} 
       	else 
       	{
            throw new NumberFormatException("falsches datumsformat");
       	}

		
		Date d = new Date(j, m, t);
       	} 
            return d;
}

ich glaub' dass ich es in etwa so geschrieben hatte - hab's mittlerweile nämlich verworfen gehabt
 

René Link

Aktives Mitglied
Hi,

hast du folgendes auch schon probiert.

Code:
import java.text.*;
import java.util.*;

public class ParseDate {

  public static void main(String[] args) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
    Date date = dateFormat.parse("24.03.1995", new ParsePosition(0));
    System.out.println(date.toString());
  }

}

In der Javadoc findest du mehr Informationen.
Wenn du verschiedene Datumsformate unterstützen willst kannst du ja folgendes versuchen.

Code:
import java.text.*;
import java.util.*;

public class ParseDate {

  private static String[] dateFormats = new String[] {
      "EEE, MMM d, ''yy",
      "h:mm a",
      "hh 'o''clock' a, zzzz",
      "yyyy.MM.dd 'at' HH:mm:ss",
      "K:mm a, z",
      "yyyy.MMMMM.dd hh:mm aaa",
      "EEE, d MMM yyyy HH:mm:ss Z",
      "yyMMddHHmmssZ"
  };

  public static void main(String[] args) {
    Date date = parseDate("24.12.03 12:47");
    if (date == null)
      System.out.println("Kein erlaubtes Datumsformat");
    else {
      System.out.println(date);
    }

    date = parseDate("2003.12.24 at 12:47:33");
    if (date == null)
      System.out.println("Kein erlaubtes Datumsformat");
    else {
      System.out.println(date);
    }
  }

  public static Date parseDate(String str){    
    SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormats[0]);
    for(int i=0; i < dateFormats.length; i++){
      dateFormat.applyPattern(dateFormats[i]);
      ParsePosition pos = new ParsePosition(0);
      Date date = dateFormat.parse(str, pos);
      int errorIndex = pos.getErrorIndex();
      if (errorIndex == -1) {
        return date;
      }
    }
    return null;
  }
}
 
S

stev.glasow

Gast
probier mal so:
Code:
private Date dateEinlesen()
   throws NumberFormatException//, IOException
{     
       
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
          String zeile = "";
          
          try
          {
             zeile = br.readLine();
          }
          catch (IOException e)
          {

            e.printStackTrace();
          }
           int t = 0, m = 0, j = 0; // hier, die änderung
          if (zeile.length() == 6)
          {
                    String tag = zeile.substring(0, 2);
                    t = Integer.parseInt(tag);
                    String monat = zeile.substring(2, 4);
                    m = Integer.parseInt(monat);
                    String jahr = zeile.substring(4, 6);
                    j = Integer.parseInt(jahr);
          }
          else
          {
            throw new NumberFormatException("falsches datumsformat");
          }

      
      Date d = new Date(j, m, t);
          }
            return d;
}

ist klar wieso ?

<edit>
hm ... 'René Link' kam mir zuvor.
 

talis

Mitglied
hey super, danke für eure hilfe!

ja, jetzt is es mir klar ;-)

hab gleich noch eine frage - hab das erste semester java unterricht und muss die woche ein programm abgeben...

also so ein typisches person-teacher-student beispiel mittels serialisierung löschen, bearbeiten, etc von datensätzen

ich hab jetzt mal einen datensatz in eine datei gespeichert, das funktioniert auch - nur sobald ich auslesen möchte bekomme ich die fehlermeldung writeabortedexception: writing aborted, notserializableexception in student

code

Code:
public void editPerson()
{
	try {
		FileInputStream fis = new FileInputStream ("C:\\uebung.ser");
		ObjectInputStream ois = new ObjectInputStream(fis);
		List liste = new ArrayList();
	
		liste = (ArrayList) ois.readObject();
			
		printPersons(liste);
		
		ois.close();
		fis.close();
	}
	catch (ClassNotFoundException cnfe) {
		System.err.println(cnfe);
	}
	catch (ClassCastException cce) {
		System.err.println(cce);
	}
	catch (IOException ioe) {
		System.err.println(ioe);
	}
}
 

René Link

Aktives Mitglied
Hi,

das kommt daher, weil du das Serializable-Interface nicht implementiert hast.
Das Serializable-Interface definiert keine Methoden. Das kommt daher, weil
alle Methoden in einem Interface public sein müssen. Die Javadoc schreibt aber
vor, dass die zwei Methoden private sein sollen. Also kann man dies nicht im
Interface spezifizieren.
Die zwei Methoden, welche für die Serialisierung zuständig sind, kannst du beliebig
komplex machen oder ganz simple halten. Da die Methoden private sind hast du von
außen keinen Zugriff darauf. Deshalb würde ich dir empfehlen eine Klasse mit load und save-Methode
selbst zu implementieren, diese kannst du dann immer wieder verwenden.
Dann geht die Serialisierung ganz einfach.

Code:
import java.io.*;

public class SimpleClassToSerializeMain {
  public static void main(String[] args)  {
    try {
      SimpleClassToSerialize scWrite = new SimpleClassToSerialize(12);
      File serFile = new File(scWrite.getClass() + ".ser");
      SerializeController.save(scWrite, serFile);
      
      SimpleClassToSerialize scRead = (SimpleClassToSerialize) SerializeController.load(serFile);
      
      System.out.println(scWrite.toString() + " " + scWrite.isSerialized());
      System.out.println(scRead.toString() + " " + scRead.isSerialized());
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}


class SerializeController {
  private SerializeController(){} // nicht instanzierbar
  
  public static void save(Serializable serObj, File serFile) throws IOException {
      FileOutputStream fout = new FileOutputStream(serFile);
      ObjectOutputStream oout = new ObjectOutputStream(fout);
      oout.writeObject(serObj);
  }

  public static Serializable load(File serFile) throws IOException{
    FileInputStream fin = new FileInputStream(serFile);
    ObjectInputStream oin = new ObjectInputStream(fin);
    try {
      return (Serializable) oin.readObject();
    }
    catch (ClassNotFoundException ex) {
      return null;
    }
  }
}


class SimpleClassToSerialize implements Serializable{
  int x;
  private transient boolean serialized = false;

  public SimpleClassToSerialize(int x) {
  this.x  = x;
  this.serialized = false;
  }
  
  public int getX() {
    return x;
  }
  public void setX(int x) {
    this.x = x;
  }
  
  public boolean isSerialized() {
    return serialized;
  }  
  
  private void writeObject(ObjectOutputStream oos) throws IOException {
    oos.defaultWriteObject();
  }
  private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
    this.serialized = true;
    ois.defaultReadObject();
  }
}

Schau dir auch noch einmal die Javadoc an.

Übrigens...
Wenn dein Objekt, was du serialisieren möchtest, Instanzvariablen hat die von einem Typ sind, welcher nicht
Serializable ist, werden die auch nicht serialisiert.

Dadurch, dass ich die Instanzvariable serialized mit transient gekennzeichnet habe, erreiche ich auch das diese
nicht serialisiert wird. So ist es mir im obigen Beispiel möglich zu erkennen, ob ein Objekt neu erstellt wurde oder
deserialisiert. Also schon einmal existierte.
 

talis

Mitglied
vielen dank erstmal

puuuh - ich muss dem lehrer das auch erklären können. so fit bin ich im moment nicht wirklich.

wir hatten das semester einen theorie test - der war aber open book und da haben wir noch nicht wirklich collections/interfaces behandelt

kannst du mir vielleicht in ein paar sätzen erklären was das alles genau tut. also wozu und warum. oder ist das selbsterklärend wenn ich mir die javadoc ansehe? das würde mir ein bisschen helfen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
C Java liest nur eine Zeile ein Java Basics - Anfänger-Themen 3
W JTextField-Objekt liest Umlaute mit falschen Zeichen ein Java Basics - Anfänger-Themen 5
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
L RandomAccessFile liest nicht alle Zeichen Java Basics - Anfänger-Themen 3
S BufferedReader liest was anderes als BufferedWriter schreibt Java Basics - Anfänger-Themen 5
eLogic Input/Output Liest Verzeichnis nicht aus??? Java Basics - Anfänger-Themen 6
W .jar datei liest text datei nicht Java Basics - Anfänger-Themen 11
A Scanner liest nur 999 Zeilen ein Java Basics - Anfänger-Themen 5
G wie liest man Fehlermeldungen Java Basics - Anfänger-Themen 3
J bufferedReader liest zu wenig daten ein Java Basics - Anfänger-Themen 6
M RandomAccessFile liest nur jeden zweiten Wert aus! Java Basics - Anfänger-Themen 8
R InputStream erstellen, der aus String liest Java Basics - Anfänger-Themen 8
O Wie schnell liest man Dateien ein ? Java Basics - Anfänger-Themen 6
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6
K Samstag einer Woche anhand eines Datum Java Basics - Anfänger-Themen 3
J Mit Datum rechnen Java Basics - Anfänger-Themen 11
B Datum ändern? Java Basics - Anfänger-Themen 8
Tally Methoden BlueJ - Datum als Kalendertag int - tagImJahr Java Basics - Anfänger-Themen 6
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
B Differenz von 2 Datum Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
D Hilfe beim SDF Datum Ausgabe Java Basics - Anfänger-Themen 20
A Plausibles Datum Java Basics - Anfänger-Themen 21
A Aktuelles Datum einfügen.. Java Basics - Anfänger-Themen 4
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Java Datum berechnen Java Basics - Anfänger-Themen 13
L Datum probleme Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
S Schleife Datum Java Basics - Anfänger-Themen 11
S Datum ändern bzw. abziehen Java Basics - Anfänger-Themen 3
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
K Wie Datum um einen Tag erhöhen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben