GregorianCalendar - Vergangene Zeit

Status
Nicht offen für weitere Antworten.

Smartie

Mitglied
Hallo,

ich hab da "mal wieder" ein mittelkleines Problem. Ich kann ja über GregorianCalendar sowohl die aktuelle Zeit holen, als auch eine von mir bestimmte Zeit einer Variablen Zuordnen, sowie "wunderschön" ausgeben:

Code:
        JOptionPane.showMessageDialog(null, "Sophie 1.0\n(c) by Matthias Surovcik"); // ohne null, mekert er
        GregorianCalendar sophie_geburtstag = new GregorianCalendar(1974, Calendar.APRIL, 12);
        int sophie_geburtstag_jahr = sophie_geburtstag.get(Calendar.YEAR);
        int sophie_geburtstag_monat = sophie_geburtstag.get(Calendar.MONTH);
        int sophie_geburtstag_tag = sophie_geburtstag.get(Calendar.DAY_OF_MONTH);
       
        
        GregorianCalendar jetzt = new GregorianCalendar();
        int jetzt_jahr = jetzt.get(Calendar.YEAR);
        int jetzt_monat = jetzt.get(Calendar.MONTH);
        int jetzt_tag = jetzt.get(Calendar.DAY_OF_MONTH);
               
        JOptionPane.showMessageDialog(null, jetzt_jahr + " Jahre, "+ jetzt_monat + " Monate, "+ jetzt_tag + " Tage");
        JOptionPane.showMessageDialog(null, sophie_geburtstag_jahr + " Jahre, "+ sophie_geburtstag_monat + " Monate, "+ sophie_geburtstag_tag + " Tage");


So, und wie schaff ich es nun, die Zeitdifferenz zu berechnen?
In diesem Fall also:

30 Jahre, 11 Monate, 13 Tage

Weiß da einer was?

Danke & Lieben Gruß

Smartie
 

The_S

Top Contributor
Hol dir die Zeit in Millisekunden, subtrahiere und rechne es dann wieder um

[edit] hab sowas in der Art schonmal gemacht! Geh mal auf www.stefan-kiesel.gmxhome.de, dann auf Gimmicks => Zeitmesser => Countdown/Countup. Oder auf der Hauptseite unter Julia ganz unten. Suchst du sowas?
 

PhantomXXL

Bekanntes Mitglied
Das mit Millisekunden dachte ich auch, gibt aber Probleme wenn die Differenz grösser als 35 Jahre is (also heute, wegen 1970 *g*) wenn das kein Problem ist, hät ichs auch so gemacht.
 

Smartie

Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
Hol dir die Zeit in Millisekunden, dividiere und rechne es dann wieder um

Meinst du eher Subtrahiere?

Ok, danke für den Tipp klingt gut, aber... ähm.. wie mach ich des? Hab grad in meinen zwei Büchlein geblättert und konnts nicht iwrklich finden (Vielleicht seh ichs auch einfach nicht)

Lieben Gruß


Smartie
 

The_S

Top Contributor
PhantomXXL hat gesagt.:
Das mit Millisekunden dachte ich auch, gibt aber Probleme wenn die Differenz grösser als 35 Jahre is (also heute, wegen 1970 *g*) wenn das kein Problem ist, hät ichs auch so gemacht.

Dann benutzt doch den GregorianCalendar!? Da dürfte es damit kein Problem geben. Schau dir mal mein edit im 1. Post an und teste mal ob dir mein Programm die richtige Differenz ausrechnet.
 

The_S

Top Contributor
Gut, hab den Code grad net da, weil ich auf Arbeit bin. Kannst du dich bis heute Abend/Nachmittag noch gedulden? Und ja ich meine subtrahieren, habs ausgebessert.
 

Smartie

Mitglied
Ja, dein Programm sieht gut aus,
es gibt es aber in Tagen, weder in Monaten noch in Jahren aus.

Aber,... WIE mache ich das mit dem Gregorian? Ich habe da bisher keinen entsprechenden befehl finden können... *Grübel*
Oder steh ich grad arg auf dem Schlauch?

Lieben Gruß und Danke

Smartie
 

PhantomXXL

Bekanntes Mitglied
Da du aber ohnehin die Differenz in Monaten und Jahren usw. auftrennst denk ich ist die Millisek Variante doch eher schlecht.

Weil die brechnet ja auch schaltjahre usw und geht vom 1.1.1970 aus.

müsstest eigentlich einfach subtrahieren können *g*

also schematisch etwa so:

Code:
dif.jahr=jetzt.jahr-geb.jahr;
dif.monat=jetzt.monat-geb.monat;
dif.tag=jetzt.tag-geb.tag;
if( dif.tag<1 ) {
dif.monat=dif.monat-1;
dif.tag=dif.tag+monat.tage;
}
if( dif.monat<1 ) {
dif.jahr=dif.jahr-1;
dif.monat=dif.monat+12;
}
 

The_S

Top Contributor
PhantomXXL hat gesagt.:
Code:
dif.jahr=jetzt.jahr-geb.jahr;
dif.monat=jetzt.monat-geb.monat;
dif.tag=jetzt.tag-geb.tag;
if( dif.tag<1 ) {
dif.monat=dif.monat-1;
dif.tag=dif.tag+monat.tage;
}
if( dif.monat<1 ) {
dif.jahr=dif.jahr-1;
dif.monat=dif.monat+12;
}

So hatte ich das auch mal, nur kam da nie das raus, was rauskommen sollte ???:L .

Du könntest dann die Tage auf Monate und Jahre umrechnen. Dann müsstest du natürlich noch überprüfen wie viele Schaltjahre in dem Zeitraum auftauchen. Wie willst du das eigentlich genau haben? 1 Monat = 30 Tage, 1 Monate = 31 Tage, 1 Monat = exakte Anzahl der Tage, ...?
 

PhantomXXL

Bekanntes Mitglied
monat.tage soll ne methode sein (sagte ja schematisch)

der übergibst du monat und jahr, ud rechnet dan die tage (also einfach ne if kettung, ausser bei februar muss er noch gucken ob das jahr durch 4 teilbar is)
 

The_S

Top Contributor
Spricht ja nix dagegen, nur ist das so sehr Fehleranfällig, oder ich hab mich einfach zu blöd angestellt *g*
 

PhantomXXL

Bekanntes Mitglied
ich tipp mal auf letzteres :)

auf millieskunden umrechnen geht jedenfalls sicher falsch, weil das dann die schaltjahre mit 75% wahrscheinlichkeit falsch rechnet gg
 

The_S

Top Contributor
PhantomXXL hat gesagt.:
auf millieskunden umrechnen geht jedenfalls sicher falsch, weil das dann die schaltjahre mit 75% wahrscheinlichkeit falsch rechnet gg

Also mein Programm ist so aufgebaut und bis jetzt hab ich noch keinen Fehler gefunden
 

Smartie

Mitglied
Hobbits Programm berücksichtigt sogar die Einführung der Sommerzeit!

Ich denke, das liegt am GregorianCalendar, deshalb denke ich auch, das es diese "Berechne die Zeitdifferenz"-Funktion doch auch irgednwo geben muß, es sit ja nicht etwas sooo exotisches.

Gruß

Smartie
 

The_S

Top Contributor
Ich könnte dir noch das hier anbieten.

Code:
GregorianCalendar damals = new GregorianCalendar(1974, 3, 12);
GregorianCalendar differenz = new GregorianCalendar();
differenz.add(Calendar.DAY_OF_MONTH, - damals.get(Calendar.DAY_OF_MONTH));
differenz.add(Calendar.MONTH, - damals.get(Calendar.MONTH));
differenz.add(Calendar.YEAR, - damals.get(Calendar.YEAR));
System.out.println(differenz.get(Calendar.YEAR) + " " + differenz.get(Calendar.MONTH) + " " + differenz.get(Calendar.DAY_OF_MONTH));

[edit] Das gibt in deinem Fall das Richtige Ergebnis aus, aber es hat trotzdem Fehler. z. B. wenn man das heutige Datum verwendet oder einfach den heutigen Tag bei einem beliebigen Jahr. kA Warum aber is so ???:L

[edit 2]
Smartie hat gesagt.:
Hobbits Programm berücksichtigt sogar die Einführung der Sommerzeit!

Ich denke, das liegt am GregorianCalendar

Das liegt 100 pro am GregorianCalendar. Ich hab das nämlich nicht eingebaut! Ich weiß nur, dass ich ne Woche drüber gehockt war und getestet hab, warum es manchmal ne Stunde zu wenig anzeigt. Bis ich dann irgendwann draufgekommen bin, dass Sommer- und Winterzeit beachtet wird :roll:
 

The_S

Top Contributor
OK, nachdem das eine Übungsaufgabe seien soll hier die theoretische Lösung:

1. Du holst dir von den beiden Daten die Zeit in Millisekunden (getTimeInMillis()) und subtrahierst die beiden voneinander
2. Du rechnest die Tage aus
3. Dann überprüfst du wie viele Schaltjahre in diesem Zeitraum vorkommen und errechnest die vergangenen Jahre und die noch übrigen Tage
4. Du schaust dir an wie viele Tage der nächste Monat (deinCalendar.get(Calendar.DAYS_OF_MONTH)) hat und überprüfst ob du noch mehr Tage übrig hast, als der nächste Monat lang ist. Ist dies der Fall ziehst du die Anzahl der Tage des Monats von deinen Resttagen ab und wiederholst das selbe Spiel mit dem nächsten Monat, bis du weniger Tage hast als der letzte Monat.

Soweit die theorie, umsetzten musst du das jetzt :bae:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Schleife für ein Jahr mit dem GregorianCalendar Java Basics - Anfänger-Themen 1
P GregorianCalendar Java Basics - Anfänger-Themen 4
D GregorianCalendar als Parameter Java Basics - Anfänger-Themen 2
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
M GregorianCalendar last month Java Basics - Anfänger-Themen 2
M GregorianCalendar Sortieren! Java Basics - Anfänger-Themen 2
P GregorianCalendar:GET Problem Java Basics - Anfänger-Themen 2
M GregorianCalendar Java Basics - Anfänger-Themen 4
U GregorianCalendar Java Basics - Anfänger-Themen 4
R Erste Schritte Arbeitszeit Zähler bzw Feierabend Uhr | GregorianCalendar | SimpleDateFormat| Java Basics - Anfänger-Themen 3
R GregorianCalendar auf Datum reduzieren Java Basics - Anfänger-Themen 9
A GregorianCalendar heute + X Tage Java Basics - Anfänger-Themen 11
L Java GregorianCalendar Java Basics - Anfänger-Themen 2
N GregorianCalendar Sommer/Winterzeit Probleme Java Basics - Anfänger-Themen 4
N GregorianCalendar Kalenderwoche in SimpelDateFormat auf 2 Systemen verschieden Java Basics - Anfänger-Themen 8
R mit GregorianCalendar Datum generieren Java Basics - Anfänger-Themen 3
C GregorianCalendar 2 Datumswerte(Differenz) auf volles Jahr prüfen Java Basics - Anfänger-Themen 4
C String to GregorianCalendar Java Basics - Anfänger-Themen 4
J GregorianCalendar: Probleme mit WEEK_OF_YEAR Java Basics - Anfänger-Themen 7
M Daten vergleichen mit GregorianCalendar - HILFE! :) Java Basics - Anfänger-Themen 3
K GregorianCalendar Java Basics - Anfänger-Themen 9
L Frage zur Ausgabe eines gesetzten GregorianCalendar Datums Java Basics - Anfänger-Themen 4
Schandro GregorianCalendar Sommerzeit abziehen Java Basics - Anfänger-Themen 6
A GregorianCalendar -Darstellung mit drawString Java Basics - Anfänger-Themen 3
P Problem mit setzen von Zeiten im GregorianCalendar Java Basics - Anfänger-Themen 3
E GregorianCalendar- Datum erstellen Java Basics - Anfänger-Themen 7
G GregorianCalendar Java Basics - Anfänger-Themen 4
W Date in Gregoriancalendar Java Basics - Anfänger-Themen 2
Z Zeitdifferenz mit GregorianCalendar Java Basics - Anfänger-Themen 6
C GregorianCalendar glaubt mir alles wieso! Java Basics - Anfänger-Themen 12
M ArrayList mit Objekt vom Typ GregorianCalendar Java Basics - Anfänger-Themen 3
C millisekunden bei gregoriancalendar stimmen nicht Java Basics - Anfänger-Themen 2
G GregorianCalendar (vor und zurück) Java Basics - Anfänger-Themen 7
G GregorianCalendar Java Basics - Anfänger-Themen 10
M GregorianCalendar bringt mich um. Java Basics - Anfänger-Themen 8
H GregorianCalendar Zeit abziehen (Countup) Java Basics - Anfänger-Themen 9
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
S Wie Rechne ich die Zeit in ...L um? Java Basics - Anfänger-Themen 15
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
I Nächstmögliche Zeit erhalten Java Basics - Anfänger-Themen 11
hello_autumn Zeit messen von ausgeführten Tools. Java Basics - Anfänger-Themen 1
B Nächster möglicher Tag bekommen / Nächste mögliche Zeit bekommen Java Basics - Anfänger-Themen 24
Y Warum aktualisiert die Zeit nicht? Java Basics - Anfänger-Themen 4
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
F actionPerformed() zur richtigen Zeit Java Basics - Anfänger-Themen 6
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
F Zeit in Milli bis Mitternacht Java Basics - Anfänger-Themen 20
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
N Zeit berechnen, die für eine Strecke benötigt wird Java Basics - Anfänger-Themen 3
S Threads Zu bestimmer Zeit Screenshot erstellen. Java Basics - Anfänger-Themen 2
M Zahlen verändern nach Zeit Java Basics - Anfänger-Themen 6
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
H Methoden Stopwatch misst Zeit einer Methode nicht Java Basics - Anfänger-Themen 8
K Zeit auslesen von Timeserver einen Tag daneben Java Basics - Anfänger-Themen 11
S Zeit messe? Java Basics - Anfänger-Themen 8
L Zeit sekündlich aktualisieren Java Basics - Anfänger-Themen 7
S Zeit bestimmen Java Basics - Anfänger-Themen 4
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
J Aufgabe: Zeit in Sekunden Java Basics - Anfänger-Themen 9
F Einfache Klassen für Datum und Zeit Java Basics - Anfänger-Themen 3
K Zeit ablaufen lassen und nach Ablauf beenden Java Basics - Anfänger-Themen 5
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
G Methoden Zeit Umrechnungsfaktor Java Basics - Anfänger-Themen 2
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
F hat jmd Zeit mir bisschen zu helfen msn/skype Java Basics - Anfänger-Themen 10
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
F Zeit per Array "zurückdrehen" Java Basics - Anfänger-Themen 5
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
C Ereignis nach einer gewissen Zeit Java Basics - Anfänger-Themen 10
C Falsche Zeit Java Basics - Anfänger-Themen 2
A Unix-Zeit verkürzen Java Basics - Anfänger-Themen 2
Z JScrollPane zeigt Zeit als Datum Java Basics - Anfänger-Themen 5
H Programm zu bestimmten Zeit ausführen Java Basics - Anfänger-Themen 3
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
G Umrechnung Zeit/Temperatur Java Basics - Anfänger-Themen 6
Luk10 Zeit-Aspekt in Java Java Basics - Anfänger-Themen 3
N zeit ausgeben Java Basics - Anfänger-Themen 5
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
X Fibonacci mit durchschnittlicher Zeit Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
M Zeitdauer-Klasse (zeit in java) Java Basics - Anfänger-Themen 9
1 Zeit und Datum der Letzten Bearbeitung einer Datei auslesen Java Basics - Anfänger-Themen 3
L Zeit stoppen in mehreren Threads Java Basics - Anfänger-Themen 2
B JFrame nur eine gewisse Zeit anzeigen Java Basics - Anfänger-Themen 3
R Zeit eingeben über Formular Java Basics - Anfänger-Themen 3
D Kann man die Bios Zeit auslesen? Java Basics - Anfänger-Themen 5
G Zeit-Funktion Java Basics - Anfänger-Themen 4
D Zeit Problem! Java Basics - Anfänger-Themen 8
M Zeit zurückgeben je sekunde Java Basics - Anfänger-Themen 8
F Zeit stoppen Java Basics - Anfänger-Themen 6
C Zeitberechnungen wieviel Zeit vergangen ist. Java Basics - Anfänger-Themen 4
J System Zeit Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben