I denne artikkelen vil du lære å manipulere dato og tid i Python ved hjelp av eksempler.
Python har en modul som heter datetime for å jobbe med datoer og klokkeslett. La oss lage noen enkle programmer relatert til dato og tid før vi graver dypere.
Eksempel 1: Få gjeldende dato og klokkeslett
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Når du kjører programmet, vil utdataene være omtrent som:
2018-12-19 09: 26: 03.478039
Her har vi importert datetime- modul ved hjelp av import datetime
statement.
En av klassene som er definert i datetime
modulen er datetime
klasse. Vi brukte deretter now()
metoden for å lage et datetime
objekt som inneholder gjeldende lokal dato og tid.
Eksempel 2: Få gjeldende dato
import datetime date_object = datetime.date.today() print(date_object)
Når du kjører programmet, vil utdataene være omtrent som:
2018-12-19
I dette programmet har vi brukt today()
metode definert i date
klassen for å få et date
objekt som inneholder den gjeldende lokale datoen.
Hva er inne i datetime?
Vi kan bruke dir () -funksjonen for å få en liste som inneholder alle attributtene til en modul.
import datetime print(dir(datetime))
Når du kjører programmet, vil utdataene være:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Vanlige klasser i datetime-modulen er:
- dato Klasse
- tidsklasse
- datetime Class
- timedelta Klasse
datetime.date Klasse
Du kan instantiere date
objekter fra date
klassen. Et datoobjekt representerer en dato (år, måned og dag).
Eksempel 3: Datoobjekt for å representere en dato
import datetime d = datetime.date(2019, 4, 13) print(d)
Når du kjører programmet, vil utdataene være:
2019-04-13
Hvis du lurer på, er det date()
i eksemplet ovenfor en konstruktør av date
klassen. Konstruktøren tar tre argumenter: år, måned og dag.
Variabelen a er et date
objekt.
Vi kan bare importere date
klasse fra datetime
modulen. Dette er hvordan:
from datetime import date a = date(2019, 4, 13) print(a)
Eksempel 4: Få gjeldende dato
Du kan opprette et date
objekt som inneholder gjeldende dato ved å bruke en klassemetode som heter today()
. Dette er hvordan:
from datetime import date today = date.today() print("Current date =", today)
Eksempel 5: Få dato fra et tidsstempel
Vi kan også lage date
objekter fra en tidsstempel. Et Unix-tidsstempel er antall sekunder mellom en bestemt dato og 1. januar 1970 ved UTC. Du kan konvertere et tidsstempel til dato ved hjelp av fromtimestamp()
metoden.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Når du kjører programmet, vil utdataene være:
Dato = 2012-01-11
Eksempel 6: Skriv ut dagens år, måned og dag
Vi kan enkelt få år, måned, dag, ukedag osv. Fra datoobjektet. Dette er hvordan:
from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)
datetime.time
Et tidsobjekt instansert fra time
klassen representerer lokal tid.
Eksempel 7: Tidsobjekt for å representere tid
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d)
Når du kjører programmet, vil utdataene være:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Eksempel 8: Skriv ut time, minutt, sekund og mikrosekund
Når du har opprettet et time
objekt, kan du enkelt skrive ut dets attributter som time, minutt osv.
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond)
Når du kjører eksemplet, vil utdataene være:
time = 11 minutt = 34 sekunder = 56 mikrosekund = 0
Legg merke til at vi ikke har bestått mikrosekund argument. Derfor blir standardverdien 0
skrevet ut.
datetime.datetime
The datetime
module has a class named dateclass
that can contain information from both date and time objects.
Example 9: Python datetime object
from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)
When you run the program, the output will be:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
The first three arguments year, month and day in the datetime()
constructor are mandatory.
Example 10: Print year, month, hour, minute and timestamp
from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp())
When you run the program, the output will be:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
A timedelta
object represents the difference between two dates or times.
Example 11: Difference between two dates and times
from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("type of t3 =", type(t3)) print("type of t6 =", type(t6))
When you run the program, the output will be:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =
Notice, both t3 and t6 are of type.
Example 12: Difference between two timedelta objects
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3)
When you run the program, the output will be:
t3 = 14 days, 13:55:39
Here, we have created two timedelta
objects t1 and t2, and their difference is printed on the screen.
Example 13: Printing negative timedelta object
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 =", abs(t3))
When you run the program, the output will be:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Example 14: Time duration in seconds
You can get the total number of seconds in a timedelta object using total_seconds()
method.
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds =", t.total_seconds())
When you run the program, the output will be:
total seconds = 435633.233423
You can also find sum of two dates and times using +
operator. Also, you can multiply and divide a timedelta
object by integers and floats.
Python format datetime
The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy
in the US, whereas dd/mm/yyyy
is more common in the UK.
Python has strftime()
and strptime()
methods to handle this.
Python strftime() - datetime object to string
The strftime()
method is defined under classes date
, datetime
and time
. The method creates a formatted string from a given date
, datetime
or time
object.
Example 15: Format date using strftime()
from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
When you run the program, the output will be something like:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Here, %Y
, %m
, %d
, %H
etc. are format codes. The strftime()
method takes one or more format codes and returns a formatted string based on it.
In the above program, t, s1 and s2 are strings.
%Y
- year (0001,… , 2018, 2019,… , 9999)%m
- month (01, 02,… , 11, 12)%d
- day (01, 02,… , 30, 31)%H
- hour (00, 01,… , 22, 23%M
- minute (00, 01,… , 58, 59)%S
- second (00, 01,… , 58, 59)
To learn more about strftime()
and format codes, visit: Python strftime().
Python strptime() - string to datetime
The strptime()
method creates a datetime
object from a given string (representing date and time).
Example 16: strptime()
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
When you run the program, the output will be:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
The strptime()
method takes two arguments:
- en streng som representerer dato og klokkeslett
- formatkode som tilsvarer det første argumentet
Forresten %d
, %B
og %Y
formatkoder brukes for henholdsvis dag, måned (fullt navn) og år.
Besøk Python strptime () for å lære mer.
Håndtering av tidssone i Python
Anta at du jobber med et prosjekt og trenger å vise dato og tid basert på deres tidssone. I stedet for å prøve å håndtere tidssone selv, foreslår vi at du bruker en tredjeparts pytZ-modul.
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Når du kjører programmet, vil utdataene være omtrent som:
Lokal tid: 2018-12-20 13: 10: 44.260462 America / New_York tid: 2018-12-20 13: 10: 44.260462 Europe / London tid: 2018-12-20 13: 10: 44.260462
Her er datetime_NY og datetime_London datetime-objekter som inneholder gjeldende dato og klokkeslett for deres respektive tidssone.