Python's strftime() onder de knie krijgen: data en tijden omzetten naar leesbare strings
Python strftime()
In dit artikel leer je hoe je date-, time- en datetime-objecten kunt converteren naar hun equivalent string-representatie, met behulp van duidelijke voorbeelden.
Video: Datums en tijden in Python
De strftime()-methode retourneert een string die datum en tijd voorstelt, gebruikmakend van een date-, time- of datetime-object.
Voorbeeld 1: datetime naar string met strftime()
Het onderstaande programma converteert een datetime-object met de huidige datum en tijd naar verschillende string-formaten.
from datetime import datetime
now = datetime.now() # huidige datum en tijd
year = now.strftime("%Y")
print("jaar:", year)
month = now.strftime("%m")
print("maand:", month)
day = now.strftime("%d")
print("dag:", day)
time = now.strftime("%H:%M:%S")
print("tijd:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("datum en tijd:", date_time)
Wanneer je het programma uitvoert, ziet de output er ongeveer zo uit:
jaar: 2018 maand: 12 dag: 24 tijd: 04:59:31 datum en tijd: 12/24/2018, 04:59:31
Hier zijn year, day, time en date_time strings, terwijl now een datetime-object is.
Hoe strftime() werkt
In het bovenstaande programma zijn %Y, %m, %d enz. formatcodes. De strftime()-methode accepteert een of meer formatcodes als argument en retourneert een geformatteerde string op basis hiervan.
- We importeerden de
datetime-klasse uit dedatetime-module. Dit is nodig omdat een object van dedatetime-klasse toegang heeft tot destrftime()-methode. - Het
datetime-object met de huidige datum en tijd wordt opgeslagen in de variabele now. - De
strftime()-methode kan worden gebruikt om geformatteerde strings te maken. - De string die je doorgeeft aan
strftime()kan meer dan één formatcode bevatten.
Voorbeeld 2: String aanmaken vanuit een timestamp
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("Datum-tijd object:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Output 2:", d)
d = date_time.strftime("%d %b, %Y")
print("Output 3:", d)
d = date_time.strftime("%d %B, %Y")
print("Output 4:", d)
d = date_time.strftime("%I%p")
print("Output 5:", d)
Output:
Datum-tijd object: 2018-06-12 09:55:22 Output 2: 06/12/2018, 09:55:22 Output 3: 12 Jun, 2018 Output 4: 12 June, 2018 Output 5: 09AM
Lijst met formatcodes
De onderstaande tabel toont alle codes die je kunt doorgeven aan de strftime()-methode.
| Directive | Betekenis | Voorbeeld |
|---|---|---|
%a | Afgekorte weekday-naam. | Zo, Ma, ... |
%A | Volledige weekday-naam. | Zondag, Maandag, ... |
%w | Weekdag als decimaal getal. | 0, 1, ..., 6 |
%d | Dag van de maand als nul-gevulde decimaal. | 01, 02, ..., 31 |
%-d | Dag van de maand als decimaal getal (geen nul). | 1, 2, ..., 30 |
%b | Afgekorte maandnaam. | Jan, Feb, ..., Dec |
%B | Volledige maandnaam. | Januari, Februari, ... |
%m | Maand als nul-gevulde decimaal. | 01, 02, ..., 12 |
%-m | Maand als decimaal getal (geen nul). | 1, 2, ..., 12 |
%y | Jaar zonder eeuw, nul-gevuld. | 00, 01, ..., 99 |
%-y | Jaar zonder eeuw, geen nul. | 0, 1, ..., 99 |
%Y | Jaar met eeuw als decimaal. | 2013, 2019, ... |
%H | Uur (24-uurs klok), nul-gevuld. | 00, 01, ..., 23 |
%-H | Uur (24-uurs klok), geen nul. | 0, 1, ..., 23 |
%I | Uur (12-uurs klok), nul-gevuld. | 01, 02, ..., 12 |
%-I | Uur (12-uurs klok), geen nul. | 1, 2, ..., 12 |
%p | Locale's AM of PM. | AM, PM |
%M | Minuut als nul-gevulde decimaal. | 00, 01, ..., 59 |
%-M | Minuut als decimaal getal. | 0, 1, ..., 59 |
%S | Seconde als nul-gevulde decimaal. | 00, 01, ..., 59 |
%-S | Seconde als decimaal getal. | 0, 1, ..., 59 |
%f | Microseconde als decimaal, links nul-gevuld. | 000000 - 999999 |
%z | UTC-offset in vorm +HHMM of -HHMM. | |
%Z | Tijdzonenaam. | |
%j | Dag van het jaar, nul-gevuld. | 001, 002, ..., 366 |
%-j | Dag van het jaar, geen nul. | 1, 2, ..., 366 |
%U | Weeknummer (zondag als eerste dag). | 00, 01, ..., 53 |
%W | Weeknummer (maandag als eerste dag). | 00, 01, ..., 53 |
%c | Locale's passende datum/tijd-weergave. | Ma 30 Sep 07:06:05 2013 |
%x | Locale's passende datumweergave. | 09/30/13 |
%X | Locale's passende tijdweergave. | 07:06:05 |
%% | Letterlijke '%'-teken. | % |
Voorbeeld 3: Locale's passende datum en tijd
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("Output 1:", d)
d = date_time.strftime("%x")
print("Output 2:", d)
d = date_time.strftime("%X")
print("Output 3:", d)
Output:
Output 1: Di 12 Jun 09:55:22 2018 Output 2: 06/12/18 Output 3: 09:55:22
Formatcodes %c, %x en %X worden gebruikt voor locale's passende datum- en tijdweergave.
We raden aan ook Python strptime() te bekijken. De strptime()-methode creëert een datetime-object vanuit een string.
Python
- Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python Regular Expressions (re-module) – een praktische gids
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
- Python's time-module beheersen: functies, structs en praktische voorbeelden
- Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden