Tijd omzetten in uren, minuten en seconden in Python

In deze tutorial zullen we het hebben over tijd. Maak je geen zorgen, dit is geen saaie geschiedenistutorial, we zullen eerder kijken naar verschillende manieren om tijd in seconden om te zetten naar tijd in uren, minuten en seconden.

Vanaf nu zullen we tijd in uren, minuten en seconden aanduiden als tijd in het gewenste formaat

Het zal er zo uitzien:

2:46:40

Laten we wat ’tijd’ nemen en nadenken over het probleem dat voor ons ligt. Ongetwijfeld heeft Python geweldige modules om de conversie voor ons te doen. Maar laten we eerst proberen ons eigen programma te schrijven voordat we verder gaan met de ingebouwde modules.

Het bouwen van een aangepaste functie om tijd om te zetten in uren, minuten en seconden

Om onze eigen conversiefunctie te schrijven, moeten we eerst nadenken over het probleem vanuit een wiskundig perspectief.

Hoe zet je seconden om naar het gewenste formaat?

Je moet de waarde van uren, minuten en seconden krijgen.

We gaan ervan uit dat de tijd in seconden niet meer is dan het totale aantal seconden in een dag. Als dit het geval is, delen we het door het totale aantal seconden in een dag en nemen we de rest.

Dit wordt wiskundig weergegeven als:

seconds = seconds % (24 * 3600)

De %-operator geeft de rest.

24*3600 omdat een uur 3600 seconden heeft (60*60) en een dag 24 uur heeft.

Hierna kunnen we doorgaan en de uurswaarde uit seconden berekenen.

1. Krijg de uurswaarde

Om de uurswaarde uit seconden te krijgen, zullen we de floor division operator (//) gebruiken.

Het geeft het gehele deel van het quotiënt terug.

Aangezien we het aantal uren nodig hebben, zullen we het totale aantal seconden (n) delen door het totale aantal seconden in een uur (3600).

Wiskundig wordt dit voorgesteld als :

hour = seconds // 3600

Hierna moeten we de minuten berekenen.

2. Krijg de minuutwaarde

Om de waarde van de minuten te berekenen, moeten we eerst het totale aantal seconden delen door 3600 en de rest nemen.

Wiskundig wordt dit voorgesteld als :

 seconds = seconds % 3600

Nu om de waarde van de minuten uit het bovenstaande resultaat te berekenen, zullen we opnieuw de floor-operator gebruiken.

minutes = seconds // 60

A minute has sixty seconds hence we floor the seconds value with 60.

Na het berekenen van de minutewaarde kunnen we doorgaan met het berekenen van de secondewaarde voor ons voorkeursformaat.

3. Krijg de secondewaarde

Om de secondewaarde te krijgen, moeten we opnieuw het totale aantal seconden delen door het aantal seconden in een minuut (60) en de rest nemen.

Wiskundig wordt dit als volgt gedaan:

 seconds = seconds % 60

Dit geeft de waarde van de seconde die we nodig hebben voor ons voorkeursformaat.

4. Volledige code

Laten we de bovenstaande kennis compileren in een Python-functie.

def convert_to_preferred_format(sec):
   sec = sec % (24 * 3600)
   hour = sec // 3600
   sec %= 3600
   min = sec // 60
   sec %= 60
   print("seconds value in hours:",hour)
   print("seconds value in minutes:",min)
   return "%02d:%02d:%02d" % (hour, min, sec) 

n = 10000
print("Time in preferred format :-",convert(n))

Uitvoer:

seconds value in hours: 2
seconds value in minutes: 46
Time in preferred format :- 02:46:40

Gebruikmakend van de Time-module

Latenn we nu kijken naar een ingebouwde module die ons in staat stelt seconden om te zetten in ons voorkeursformaat in één regel code.

De tijdmodule definieert het epoch als 1 januari 1970, 00:00:00 (UTC) in Unix-systemen (systeemafhankelijk). Het epoch is in feite het begin van de tijd voor een computer. Denk eraan als dag 0. Telkens wanneer we seconden converteren met behulp van de tijdmodule, wordt dit epoch gebruikt als referentiepunt.

Om het epoch in jouw systeem weer te geven, gebruik je de volgende regel code:

time.gmtime(0)

Om seconden om te zetten naar het gewenste formaat, gebruik je de volgende regel code:

time.strftime("%H:%M:%S", time.gmtime(n))

Deze regel neemt de tijd in seconden als ‘n’ en stelt je vervolgens in staat om de uur-, minuut- en secondewaarde afzonderlijk weer te geven.

De volledige Python-code is als volgt:

import time
n=10000
time_format = time.strftime("%H:%M:%S", time.gmtime(n))
print("Time in preferred format :-",time_format)

Uitvoer:

Time in preferred format :- 02:46:40

De tijdmodule biedt ook de mogelijkheid om extra informatie weer te geven, zoals dag, maand en jaar.

%a display abbreviated weekday name.
%A display full weekday name.
%b display abbreviated month name.
%B display full month name.
%c display the appropriate date and time representation.
%d display day of the month as a decimal number [01,31].

Latens proberen met %a en %b.

import time
n=100000000000
time_format = time.strftime("Day: %a, Time: %H:%M:%S, Month: %b", time.gmtime(n))
print("Time in preferred format :-",time_format)

Uitvoer:

Time in preferred format :- Day: Wed, Time: 09:46:40, Month: Nov

Gebruikmakend van de Datetimemodule

Je kunt ook de timedelta-methode onder de Datetimemodule gebruiken om seconden om te zetten naar het gewenste formaat.

Het geeft de tijd weer als dagen, uren, minuten en seconden verstreken sinds het epoch.

De Python-code om seconden om te zetten naar het gewenste formaat met behulp van de Datetime-module is als volgt:

import datetime
n= 10000000
time_format = str(datetime.timedelta(seconds = n))
print("Time in preferred format :-",time_format)

Uitvoer :

Time in preferred format :- 115 days, 17:46:40

Conclusie

Deze handleiding bekijkt drie verschillende manieren waarop je seconden kunt omzetten in uren, minuten en seconden. Over het algemeen zijn er twee verschillende benaderingen voor dit probleem.

Je kunt ofwel je eigen functie schrijven of een ingebouwde module gebruiken. We zijn begonnen met het schrijven van onze eigen functie en hebben vervolgens gekeken naar de time– en DateTime-module.

Source:
https://www.digitalocean.com/community/tutorials/python-convert-time-hours-minutes-seconds