0 Daumen
3,8k Aufrufe

Hi Leute.


Ich programmiere zurzeit mit Java und meine Aufgabe ist es eine größere Sekundenzahl in Jahre, Stunden, Minunten,Sekunden auszurechnen...


Als Beispiel: 


Sekunden: 23476234688

Das sind: 744 Jahre, 155 Tage, 16 Stunden, 18 Minuten und 8 Sekunden.


Jetzt grübel ich ganze Zeit schon, wie ich das in einer mathematischen Formel ausdrücken kann? 


Also ich weiß nur, wie ich die Sekunden immer als feste "Einheit" ausrechnen kann... Sprich ich kann sagen, wie viele Sekunden wären so und so viel Jahre. Aber ich weiß nicht, wie ich es mathematisch "ausdrücken" kann, wie viel Tage etc das restliche Jahr wären (Wenn es nicht zu einem vollen Jahr gereicht hat). Also zum Beispiel wie ich auf diese "155 Tage" komme..


ich hoffe ihr verstehst was ich meine... Hat vielleicht jemand eine Idee? 

Avatar von

Sollst du die Schaltjahre berücksichtigen?

Bis zu Tagen ist das kein Problem.

23476234688 s 

= (23476234688)/60 min

= ((23476234688) / 60)/60) h 

= (((23476234688) / 60)/60) / 24) d  (Tage) 

/ ist jeweils ein Divisionszeichen. 


Ne die Schaltjahre soll ich nicht berücksichtigen.


Mein größtes Problem dabei ist halt, dass ich nicht weiß, wie ich die "restlichen" Tage/Stunden etc darstellen soll. Ich weiß nicht wie ich in Java ausdrücken kann in der Art: "Nimm den Rest und rechne mit dem Rest weiter" :D Ich dachte da halt an ein Switch-Case Szenario... Aber da bin ich mir halt irgendwie unentschlossen.


Habe erst vorherige Woche damit angefangen. Aber danke! Die Rechnung hilft mir schon mal.

Dir muß ein Java-Programmierer
weiterhelfen.

Das wäre toll, aber da werde ich hier wohl keinen finden. Dennoch danke für eure Hilfe. :)

Das hier ist Java-Script https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc

(Ich habe "java trunc" bei Google eingegeben. )

Ohne Schaltjahre

 (((23476234688) / 60)/60) / 24) d 

= ((((23476234688) / 60)/60) / 24) / 365) Jahre  

Danke Lu. Sehr nett von dir, dass du es rausgesucht hast für mich :)

3 Antworten

+2 Daumen

Wenn du die Zahl der Jahre hast, kannst du ja diese Jahre

wieder in Sekunden umrechnen und von der

ursprünglichen Zahl der Sekunden abziehen.

Diese neue Zahl  s  (ist ja sicherlich weniger als ein Jahr)

rechnest du in volle Tage um.

Dann  wieder die Zahl der Tage in Sekunden umrechnen

und von der Zahl s abziehen, das muss ja dann weniger als

ein Tag sein und das rechnest du in Stunden um etc.

Avatar von
+1 Daumen

Gibt es in Java die Möglichkeit ein
Ergebnis ( Fließkommazahl ) in
die Zahl vor dem Komma und nach dem
Komma aufzuspalten ?

Dein Beispiel
Jahr 744.23476234688
in
744
und
0.23476234688

In Pascal wäre dies
Rest = Jahr - int(Jahr)
Rest = 744.23476234688- 744
Rest = 
0.23476234688


Avatar von
+1 Daumen

Es gibt auch in Java eine Modulo Funktion den %-operator (hier ist ein Beispiel). Der Code sähe im Prinzip so aus:

    s = 23476234688;

    faktor1 = 60; // 60s -> 1min
    sekunden = s % faktor1;

    faktor0 = faktor1;
    faktor1 = faktor0 * 60; // 60min -> 1h
    minuten = (s % faktor1)/faktor0; // Achtung: hier ist eine Integer-Division ohne Rest

    faktor0 = faktor1;
    faktor1 = faktor0 * 24; // 24h -> 1d
    stunden = (s % faktor1)/faktor0;

    faktor0 = faktor1;
    faktor1 = faktor0 * 365; // 365d -> 1a
    tage = (s % faktor1)/faktor0;

    faktor0 = faktor1;
    jahre = s /faktor0; // Mod -> infinity

Du kannst die Faktoren natürlich auch im Vorfeld berechnen und als Konstante enfügen. Obiges dient nur zum Verständnis. Wichtig: alle Variablen sind Integer - so dass bei jeder Division immer eine ganzzahlige Integerdivision ohne Rest durchgeführt wird.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community