Früheste Datum aus 3 Felder

Status
Nicht offen für weitere Antworten.

Cheefrocker

Bekanntes Mitglied
Hallo zusammen!

Ich hätte da eine Frage.
Undzwar habe ich 3 Stringvariablen in den jeweils 3 Datumswerte gespeichert sind oder auch nicht(sprich String leer "").

Jetzt wollt ich mit dem GregorianCalendar arbeiten. Dieser kann nur Integerwerte aufnehmen! Gesagt getan! String wird in Integer umgewandelt, dann an den GregorianCalendar übergeben!

Dieser hat eine Methode before bzw after. Damit kann man 2 Objekte miteinander vergleichen und herausfinden welches Datum vor oder danach liegt!

Wie aber überprüfe ich mehrere Datumswerte miteinander? Ich könnt es zwar mit ifs lösen aber das ich kein guter Lösungsansatz!

Kann mir eventuell jemand helfen??? Vielleicht dierekt mti Lösung! :roll: dann ist ja das problem mti dem Leerstring! Wenn der String leer ist soll er nicht mit in die Berechnung einfliesen! Ist ja logisch wenn ich nix an der GregorianCalendar übergebe!



Danke für alle im voraus.


mfg :wink:
 

hugo

Bekanntes Mitglied
Das mit before() bzw. after() ist nämlich schon i.O. es ist bloß eine Frage der Datenstruktur und der Sortieralgorithmen. Wie sind deine Daten denn organisiert? Wenn es nur die drei Strings sind ist die Variante mit dem if wahrscheinlich die einfachste. Wenn du viele Daten in einem Feld von String hast, dann könnte man bei der Suche nach dem höchsten Datum einfach eine Schleife machen:
Code:
GregorianCalendar tempFruehest;
GregorianCalendar[] daten = new GregorianCalendar[7];
tempHoechst = daten[0];
for(int i = 1; i < daten.length; i++)
{
     if(tempFruehest.after(daten[i])) tempFruehest = daten[i];
}
System.out.println("Fruehestes Datum: " + tempFruehest.toString());
Wenn du wirklich drei Felder hast, kannst du sie ja entweder zu einem zusammenführen, oder du verschachtelst zwei Schleifen. Zeig einfach mal, wie du es bisher organisiert hast.
 

Cheefrocker

Bekanntes Mitglied
z.b

erstes Datum: 12.05.2005 (als String)
zweites Datum: 18.16.2005(als String)
drittes Datum: 10.04.2004(als String)

und weil ich das früheste Datum haben will wäre es hier: 10.04.2004

Die Datumswerte können beliebig sein! Da ich aber mehrere Datumswerte verglichen haben wollte wusste ich ncith wie ich das mussen soll! mit if ist ein bissel blöd! und der gregoriancalendar kann nur 2 Werte vergleichen....

ich bin einfach nur am verzweifeln :(
 

Sky

Top Contributor
Cheefrocker hat gesagt.:
z.b

erstes Datum: 12.05.2005 (als String)
zweites Datum: 18.16.2005(als String)
drittes Datum: 10.04.2004(als String)

und weil ich das früheste Datum haben will wäre es hier: 10.04.2004

Die Datumswerte können beliebig sein! Da ich aber mehrere Datumswerte verglichen haben wollte wusste ich ncith wie ich das mussen soll! mit if ist ein bissel blöd! und der gregoriancalendar kann nur 2 Werte vergleichen....

ich bin einfach nur am verzweifeln :(

Pack deine drei Datums (heißt das so?) in einen Container und sortiere diesen.
 

Cheefrocker

Bekanntes Mitglied
sky80 hat gesagt.:
Cheefrocker hat gesagt.:
z.b

erstes Datum: 12.05.2005 (als String)
zweites Datum: 18.16.2005(als String)
drittes Datum: 10.04.2004(als String)

und weil ich das früheste Datum haben will wäre es hier: 10.04.2004

Die Datumswerte können beliebig sein! Da ich aber mehrere Datumswerte verglichen haben wollte wusste ich ncith wie ich das mussen soll! mit if ist ein bissel blöd! und der gregoriancalendar kann nur 2 Werte vergleichen....

ich bin einfach nur am verzweifeln :(

Pack deine drei Datums (heißt das so?) in einen Container und sortiere diesen.

pack ich die drei Datumswerte(Strings) in den container oder den GregorianCalendar??

Sorry für die blöde Frage aber wie kann ich dann am besten sortieren mit dem container??
 

hugo

Bekanntes Mitglied
Natürlich den GregorianCalendar in den Container setzen, da nur diese vergleichbar sind. Den String zu vergleichen würde nichts bringen.
 

Cheefrocker

Bekanntes Mitglied
@hugo vielen dank! ich probiert das grade mit dem ArrayList aus :)

poste wenns gleich klappt oder auch nicht mal den Code rüber!

mfg
 

L-ectron-X

Gesperrter Benutzer
Calendar-Objekte sortieren kann man auch mit der compareTo()-Methode, die von den Klassen implementiert werden muss, welche zu sortierende Calendar-Objekte speichern.
Ein Beispiel zu einem ähnlichen Thema:
http://www.java-forum.org/de/viewtopic.php?t=20211

Mit Container meint Sky80 sicher eine Collections wie bspw. einen Vector, den du mit
Code:
Collections.sort(meinDatumVector);
sortieren kannst.
 

hugo

Bekanntes Mitglied
Die Klasse Collections existiert auch schon im SDK 1.3. Was die compareTo()-Methode angeht, hast du aber recht. Das existiert in der Version noch nicht.

Aber wie gesagt:
Code:
GregorianCalendar datum1, datum2, datum3;
Vector daten = new Vector();
daten.add(datum1);
daten.add(datum2);
daten.add(datum3);
Collections.sort(daten);
GregorianCalendar fruehest = (GregorianCalendar)daten.first();
 

Sky

Top Contributor
weitere Möglichkeit: Du fügst deine Strings in ein "SortedSet " ein.

Code:
    SortedSet set = new TreeSet();
    set.add("12.05.2005");
    set.add("18.16.2005");
    set.add("10.04.2004");
    System.out.println(set.first());
 

Cheefrocker

Bekanntes Mitglied
sky80 hat gesagt.:
weitere Möglichkeit: Du fügst deine Strings in ein "SortedSet " ein.

Code:
    SortedSet set = new TreeSet();
    set.add("12.05.2005");
    set.add("18.16.2005");
    set.add("10.04.2004");
    System.out.println(set.first());

@sky80 deine lösung scheint nicht ganz zu funktioniert.

bei den Werten :
set.add("12.10.2005");
set.add("02.01.2003");
set.add("31.12.2002");

gibt er mir den Wert 02.01.2003 aus! das ist jedoch falsch! denn 31.12.2002 müsste augegeben werden

???:L
 

Sky

Top Contributor
Sorry, kleiner Denkfehler. Das Problem wirst Du immer haben, wenn Du einen Stringvergleich durchführst. Das Ergebnis kommt dadurch zustande, dass 0 (von 02.01.2003) < 3 (von 31.12.2002) und somit der String der mit 0 beginnt als der kleinere angesehen wird.

Du mußt einfach den Vergleich auf Datums durchführen, dazu müssen die String geparst werden:
Code:
    DateFormat df = new SimpleDateFormat( "dd.MM.yyyy");
    SortedSet set = new TreeSet();
    try {

      set.add( df.parse( "12.10.2005" ) );
      set.add( df.parse( "02.01.2003" ) );
      set.add( df.parse( "31.12.2002" ) );
    } catch( ParseException ex ) {
      ex.printStackTrace();
    }
    System.out.println(set.first());
 

Dukel

Top Contributor
Evtl. als Timestamp ausgeben und dann das kleineste suchen lassen. (wenn das so geht, hab nicht viel bis gar nichts mit Daten gemacht)
 

Cheefrocker

Bekanntes Mitglied
@sky80 thx

jetzt hab ich mir diese Lösung angekuckt und musste feststellen das er Probleme hat sobald man mehr als 2 Werte einfügt



Code:
GregorianCalendar datum1, datum2, datum3; 
Vector daten = new Vector(); 
daten.add(datum1); 
daten.add(datum2); 
daten.add(datum3); 
Collections.sort(daten); 
GregorianCalendar fruehest = (GregorianCalendar)daten.first();

Er wirft mir eine ClassCastException raus! Wo liegt der fehler????
 

Cheefrocker

Bekanntes Mitglied
@hugo er bringt mir folge Fehlermeldung

aber ich denke das es bei collections.sort(daten) liegt..



//---------------------------------------------
java.lang.ClassCastException: java.util.GregorianCalendar

at java.util.Arrays.mergeSort(Arrays.java:1064)

at java.util.Arrays.sort(Arrays.java:1014)

at java.util.Collections.sort(Collections.java:78)

at VGA.VGA.Refresh_BM03_01(VGA.java:5386)

at VGA.VGA.jButton_BM03_Weiter_actionPerformed(VGA.java:6797)

at VGA.VGA$155.actionPerformed(VGA.java:2412)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450)

at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:216)

at java.awt.Component.processMouseEvent(Component.java:3717)

at java.awt.Component.processEvent(Component.java:3546)

at java.awt.Container.processEvent(Container.java:1164)

at java.awt.Component.dispatchEventImpl(Component.java:2595)

at java.awt.Container.dispatchEventImpl(Container.java:1213)

at java.awt.Component.dispatchEvent(Component.java:2499)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)

at java.awt.Container.dispatchEventImpl(Container.java:1200)

at java.awt.Window.dispatchEventImpl(Window.java:912)

at java.awt.Component.dispatchEvent(Component.java:2499)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)

at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)


//---------------------------------------------
 

hugo

Bekanntes Mitglied
Man du hast ja da anscheinend noch eine ganze GUI mit dran.
Tja, da war die Idee dann wohl doch nicht so gut. Collections sortiert nach der Methode compareTo(). Diese ist aber in GregorianCalendar nicht enthalten. Also muss man zurück zu Date casten.
Code:
                GregorianCalendar datum1, datum2, datum3;
		ArrayList daten = new ArrayList();
		daten.add(datum1.getTime());
		daten.add(datum2.getTime());
		daten.add(datum3.getTime());
		Collections.sort(daten);
		Date fruehest = (Date)daten.get(0);
		System.err.println(fruehest.toString());

Das funktioniert.

Sorry, dass ich vorher nicht getestet hatte, mir fehlte die IDE.
 

Cheefrocker

Bekanntes Mitglied
:) so sieht es doch direkt viel besser aus!!

@hugo jap ist ne gui mit momentan ~7000 Zeilen code! Denke das noch mindestens 20000 Zeilen folgen werden...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
A Datum Prüfen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
E Methoden Datum , Uhrzeit, Nachricht in txt Datei schreiben Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
A Datum formatieren Java Basics - Anfänger-Themen 8
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
M Datum aus einer Textdatei holen Java Basics - Anfänger-Themen 9
M Datum und Stunde als String ausgeben Java Basics - Anfänger-Themen 15
N Datentypen Datum konvertieren mit kurzer Monatsangabe Java Basics - Anfänger-Themen 3
U Java Datum vergleichen - Sommerzeitproblem Java Basics - Anfänger-Themen 5
R GregorianCalendar auf Datum reduzieren Java Basics - Anfänger-Themen 9
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
F Datum AM / PM parsen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben