Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Moin moin,

ich hab da eine Frage. Ich möchte in einer Combobox alle Montag ab einem bestimmten Datum anzeigen lassen (zum Beispiel die letzten 8 Montage).

Da ich diese Informationen nicht aus einer DB oder ähnlichem beziehen kann, bräuchte ich sicherlich eine Formel oder so, die mir zum Beispiel die Millisekunden seit dem 1.1.1970 zählt und daraufhin die Montage ausgeben kann?

Ziel des Ganzen ist es, sich einen Montag anhand des Datums auszusuchen. Daraufhin werden dann sämtliche Informationen zu diesem Tag und den Rest der Woche (Termine, Besprechungen, Zeiten) angezeigt, jeweils in eigenen Bereichen.

Vielen Dank im vorraus und mfg

Geschrieben

Servus,

schau Dir mal die Klasse Calendar und die Ableitung GregorianCalendar der Java SE an. Die kapseln und abstrahieren Date bereits soweit, das Du mit Kalenderinformationen arbeiten kannst. Ist zwar immer noch am Anfang ein wenig mühselig, aber es funktioniert.

Peter

Geschrieben

Ich bin mir sicher, ich verstehe Dich falsch, aber der Combobox gibst Du einfach über die Methode addItem(Object o) Werte mit. Also:


JComboBox combo = new JComboBox();


combo.addItem(date1);

combo.addItem(date2);

Oder willst Du wissen, wie Du die korrekten Daten ermittelst? Was hast Du denn probiert und wo hakt es?

Peter

Geschrieben

Also das ich der Combobox Werte gebe klappt schon.

Ich hab jetzt aber nur das aktuelle Datum drin was ich mir aus

calendar.getTimeInMillis();

hole. Zufällig ist ja heut Montag und das passt ja auch. Was mir jetzt fehlt, wo es hakt, ist, das ich jetzt noch gern den vergangenen Montag (sprich den 3.3.2008) und noch mindestens die 2 davor drin haben möchte.

Ab nächste Woche dann den 17.03, den 10.03, den 03.03 und den 25.02.

Darauf die Woche dann den 24., den 17, den 10 und den 03.03 und das halt immer so weiter.

Knabbern tu ich halt dran die Montag raus zu filtern, ich brauch nämlich nur genau die.

Geschrieben

Zieh doch einfach so oft 24 * 3600 * 1000 Ms ab, bis DAY_OF_WEEK = 1 (Montag)

Pseudocode:


date = date.getMilliseconds() - (DAY_OF_WEEK.Monday - date.DAY_OF_WEEK) * 24 * 3600 * 1000

Somit kommst du jedenfalls zum letzten Montag. Alle für alle anderen Montage brauchst du ja nur x-mal 7 * 24 * 3600 * 1000 Ms addieren/subtrahieren.

Geschrieben

Servus,

noch schöner, als hier die Millisekunden bis zum Tag hochzurechnen und abzuziehen, finde ich die Verwendung der Methode .roll() auf dem Calendar besser, damit kann ich nämlich schöner einen Tag vor und zurück marschieren. Dann prüfe ich halt erst so lange, bis ich den nächsten Montag habe, und danach rolle ich jeweils eine Woche, solange, bis ich genug Montage habe.

Hast Du Dir denn die API Dokumentation zu Calendar angesehen? Warum hast Du dort keine Lösung gefunden?

Peter

Geschrieben

Moin

Start = calendar.getTimeInMillis() - (calendar.MONDAY - calendar.DAY_OF_WEEK) * 24 * 3600 * 1000;

Start ist ne Long Variable

calendar ist vom Typ GregorianCalendar

hab ich jetzt probiert, das bringt mir den 16.03.2008

habs mit "-Tag*6" ergänzt /geschummelt um auf den Montag zu kommen, stimmt das dann so? Bekomm jetzt auf jeden Fall den aktuellen Montag und die davor halt.

Das mit dem Calendar.roll() aber bin auch nicht draus schlau geworden

Geschrieben

Servus,

woraus bist Du denn konkret nicht schlau geworden? Es steht doch in der Erklärung genau drin, was die Methode tut. Also hier noch mal langsam (die Methode ist hier reingetippt, ohne IDE, deshalb können noch Typos drin sein):


Calendar calendar = Calendar.getInstance(); // hol Dir ein Calendar-Objekt


// hol Dir den nächsten Montag

while(calendar.get(Calendar.DAY_OF_WEEK != Calendar.MONDAY) {

    calendar.roll(Calendar.DAY_OF_WEEK, true); // "rolle" jeweils einen Tag nach vorn.

}


// jetzt hat calendar den nächsten Montag erreicht. 

Jetzt sollte es eine kleine Transferleistung sein, dieses Beispiel so zu erweitern, dass Du ausgehend vom jetzigen Montag jeweils eine Woche nach vorn "rollst", so lange, bis Du genügend Montage zusammen hast.

Allerdings glaube ich Dir nicht, das Du die Methode "roll" nicht verstanden hast, sondern denke, das Du einfach nicht in die Dokumentation geschaut hast. Denn dort steht genau das drin.

Peter

Geschrieben

Guten Morgen,

Natriumarm hat mich per PN auf einen Fehler in meinem Codeausschnitt aufmerksam gemacht, deshalb hier kurz die Korrektur:


while(calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {

Geändert ist die schließende Klammer nach DAY_OF_WEEK, da ich ja den Wert, den ich dort zurückbekomme, mit der Konstanten für Montag vergleichen will.

@Natriumarm: probiers bitte nochmal aus und sag bei weiteren Fehlern Bescheid.

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...