Teilen Sie eine Zahl in Sekunden in Tage, Stunden, Minuten und Sekunden auf?

7

Ich habe gehört, dass dies mit dem in den meisten Programmiersprachen vorhandenen Modulo % -Operator möglich ist. Die wirkliche Frage ist, wie? Ich bin nicht vertraut mit der Funktionsweise des Moduls, daher hatte ich in der Vergangenheit Schwierigkeiten damit. Angesichts der Gegenwart hier in Sekunden seit 1970, 1307758473.484 , wie kann ich berechnen, wie viele Jahre ist, das heißt, dass Stunden, das ist, und Minuten, die Modulo verwendet?

Ich möchte im Wesentlichen so formatieren: "5 Jahre, 10 Tage, 12 Stunden, 7 Minuten und 18,56 Sekunden". Wie würde ich das tun? Ich bin wirklich daran interessiert, die Logik dahinter zu verstehen und nicht interessiert an einer einfachen Drop-In-Lösung.

    
Naftuli Kay 11.06.2011, 02:17
quelle

2 Antworten

20

Wenn Sie eine Integer-Division durchführen, erhalten Sie den Quotienten und den Rest. Zum Beispiel

%Vor%

In Programmiersprachen wird dies normalerweise wie folgt ausgedrückt:

%Vor%

Die von Ihnen gewünschte Konvertierung ist nur eine Wiederholung davon. Es ist einfacher, mit der unteren Einheit zu beginnen und höher zu gehen .

Zuerst haben Sie

  • 1307758473.484 seconds

Seit 60 Sekunden ist 1 Minute und

%Vor%

ist dasselbe wie

  • 21795974 minutes 33.484 seconds

Seit 60 Minuten ist 1 Stunde und

%Vor%

es ist weiterhin dasselbe wie

  • 363266 hours 14 minutes 33.484 seconds

Nun, es gibt ein bisschen Schwierigkeiten. Die meisten Tage sind 24 Stunden. Wenn es eine Schaltsekunde gibt, ist es nicht. Wenn Sie Schaltsekunden ignorieren und davon ausgehen, dass 1 Tag 24 Stunden ist, dann führen Sie die Berechnung aus,

%Vor%

es ist weiterhin dasselbe wie

  • 15136 days 2 hours 14 minutes 33.484 seconds .

Ähnlich sind die meisten Jahre 365 Tage. Wenn es einen Schalttag (Jahr) gibt, ist es nicht. Wenn Sie Schalttage ignorieren und davon ausgehen, dass 1 Jahr 365 Tage ist, dann führen Sie die Berechnung aus,

%Vor%

es ist weiterhin dasselbe wie

  • 41 years 171 days 2 hours 14 minutes 33.483 seconds
sawa 11.06.2011, 03:03
quelle
4

Der Modul gibt den Rest zurück, wenn eine ganzzahlige Division durchgeführt wird.

Ich denke, es ist am einfachsten zu verstehen, wie man Mod benutzt, indem man zuerst rückwärts durch ein Problem arbeitet.

Beginnen wir einfach mit Stunden, Minuten und Sekunden - 1 Stunde, 10 Minuten und 30 Sekunden um genau zu sein.

Zuerst haben Sie 30 Sekunden. Das ist einfach - es ist nur 30. Kein Problem. Fügen Sie jetzt Minuten hinzu - um Minuten als Sekunden zu bestimmen, multiplizieren Sie sie mal mit 60. Also 10 Minuten und 30 Sekunden = 630 Sekunden.

Jetzt sehen wir, wie Mod funktioniert - denn wenn Sie 630 durch 60 teilen, erhalten Sie 10.5, aber wenn Sie den Bruch (ganzzahlige Division) ignorieren, erhalten Sie 10. Der Rest sind die Sekunden.

Wenn Sie MOD 630 mit 60 erhalten, erhalten Sie 30 - der Rest bleibt übrig, wenn Sie 630 mit 30 teilen.

Um Minuten und Sekunden zu bestimmen, dividieren Sie die Minuten durch 60 und die Sekunden um 60.

Fügen Sie jetzt eine Stunde hinzu. Eine Stunde = 60 Minuten und 60 Minuten sind 60 * 60 Sekunden, also 1 Stunde = 3600 Sekunden. 3600 + 600 + 30 = 4230 Sekunden.

4230/3600 (1 Stunde) = 1 - so haben wir eine Stunde

4230% (mod) 3600 = 630 - nehmen Sie dies und jetzt verarbeiten wir für Minuten.

Also, wenn Sie das weiter ausarbeiten und einen Tag hinzufügen - 1 Tag = 24 Stunden = 24 * 3600 = 86400 86400 + 3600 + 600 + 30 = 90630

90630/86400 = 1 - & gt; 1 Tag

90630% 86400 = 4230 - & gt; Sekunden übrig

4230/3600 = 1 - & gt; 1 Stunde

und wiederholen Sie die obige Logik.

Ich hoffe, das hilft, es aufzuklären - Sie wiederholen diese Wiederholung immer weiter und Sie können Wochen und Jahre machen, aber Monate sind besonders, da sie unregelmäßig sind, und auch Schaltjahre.

    
The Evil Greebo 11.06.2011 02:27
quelle

Tags und Links