I den här artikeln lär du dig att manipulera datum och tid i Python med hjälp av exempel.
Python har en modul som heter datetime för att arbeta med datum och tider. Låt oss skapa några enkla program relaterade till datum och tid innan vi gräver djupare.
Exempel 1: Hämta aktuellt datum och tid
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
När du kör programmet blir resultatet ungefär som:
2018-12-19 09: 26: 03.478039
Här har vi importerat datetime- modul med import datetime
uttalande.
En av klasserna som definieras i datetime
modulen är datetime
klass. Vi använde sedan now()
metoden för att skapa ett datetime
objekt som innehåller aktuellt lokalt datum och tid.
Exempel 2: Få aktuellt datum
import datetime date_object = datetime.date.today() print(date_object)
När du kör programmet blir resultatet ungefär som:
2018-12-19
I det här programmet har vi använt en today()
metod som definierats i date
klassen för att få ett date
objekt som innehåller det aktuella lokala datumet.
Vad finns i datetime?
Vi kan använda dir () -funktionen för att få en lista som innehåller alla attribut för en modul.
import datetime print(dir(datetime))
När du kör programmet blir resultatet:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Vanligt förekommande klasser i datetime-modulen är:
- datum Klass
- tidsklass
- datetime Class
- timedelta Klass
datetime.date Klass
Du kan instantiera date
objekt från date
klassen. Ett datumobjekt representerar ett datum (år, månad och dag).
Exempel 3: Datumobjekt som representerar ett datum
import datetime d = datetime.date(2019, 4, 13) print(d)
När du kör programmet blir resultatet:
2019-04-13
Om du undrar, date()
i exemplet ovan är en konstruktör av date
klassen. Konstruktören tar tre argument: år, månad och dag.
Variabeln a är ett date
objekt.
Vi kan bara importera date
klass från datetime
modulen. Här är hur:
from datetime import date a = date(2019, 4, 13) print(a)
Exempel 4: Få aktuellt datum
Du kan skapa ett date
objekt som innehåller det aktuella datumet med hjälp av en klassmetod med namnet today()
. Här är hur:
from datetime import date today = date.today() print("Current date =", today)
Exempel 5: Hämta datum från en tidsstämpel
Vi kan också skapa date
objekt från en tidsstämpel. En Unix-tidsstämpel är antalet sekunder mellan ett visst datum och den 1 januari 1970 vid UTC. Du kan konvertera en tidsstämpel till datum med fromtimestamp()
metoden.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
När du kör programmet blir resultatet:
Datum = 2012-01-11
Exempel 6: Skriv ut dagens år, månad och dag
Vi kan enkelt få år, månad, dag, veckodag etc. från datumobjektet. Här är hur:
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
Ett tidsobjekt instanserat från time
klassen representerar den lokala tiden.
Exempel 7: Tidsobjekt som representerar 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 kör programmet blir resultatet:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Exempel 8: Skriv ut timme, minut, sekund och mikrosekund
När du har skapat ett time
objekt kan du enkelt skriva ut dess attribut som timme, minut etc.
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 kör exemplet blir utdata:
timme = 11 minut = 34 sekunder = 56 mikrosekunder = 0
Lägg märke till att vi inte har godkänt mikrosekundargument. Därför 0
skrivs dess standardvärde 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 sträng som representerar datum och tid
- formatkod motsvarande det första argumentet
Förresten, %d
, %B
och %Y
är formatkoder som används för dag, månad (fullständigt namn) och år respektive.
Besök Python strptime () för att lära dig mer.
Hantering av tidszon i Python
Antag att du arbetar med ett projekt och måste visa datum och tid baserat på deras tidszon. I stället för att försöka hantera tidszonen själv föreslår vi att du använder 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 kör programmet blir resultatet ungefär som:
Lokal tid: 2018-12-20 13: 10: 44.260462 America / New_York time: 2018-12-20 13: 10: 44.260462 Europe / London time: 2018-12-20 13: 10: 44.260462
Här är datetime_NY och datetime_London datetime-objekt som innehåller aktuellt datum och tid för respektive tidszon.