Python datetime (med eksempler)

I denne artikel lærer du at manipulere dato og tid i Python ved hjælp af eksempler.

Python har et modul med navnet datetime til at arbejde med datoer og tidspunkter. Lad os oprette et par enkle programmer relateret til dato og klokkeslæt, før vi graver dybere.

Eksempel 1: Få aktuel dato og tid

 import datetime datetime_object = datetime.datetime.now() print(datetime_object) 

Når du kører programmet, vil output være omtrent som:

 2018-12-19 09: 26: 03.478039

Her har vi importeret datetime- modul ved hjælp af import datetimestatement.

En af de klasser, der er defineret i datetimemodulet, er datetimeklasse. Vi brugte derefter now()metoden til at oprette et datetimeobjekt, der indeholder den aktuelle lokale dato og tid.

Eksempel 2: Få aktuel dato

  import datetime date_object = datetime.date.today() print(date_object) 

Når du kører programmet, vil output være omtrent som:

 2018-12-19

I dette program har vi brugt today()metode defineret i dateklassen til at få et dateobjekt, der indeholder den aktuelle lokale dato.

Hvad er inde i datetime?

Vi kan bruge dir () -funktionen til at få en liste, der indeholder alle attributter for et modul.

 import datetime print(dir(datetime))

Når du kører programmet, vil output være:

 ('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ') 

Almindeligt anvendte klasser i datetime-modulet er:

  • dato Klasse
  • tidsklasse
  • datetime klasse
  • timedelta klasse

datetime.date Klasse

Du kan instantiere dateobjekter fra dateklassen. Et datoobjekt repræsenterer en dato (år, måned og dag).

Eksempel 3: Datoobjekt til at repræsentere en dato

  import datetime d = datetime.date(2019, 4, 13) print(d) 

Når du kører programmet, vil output være:

 2019-04-13

Hvis du undrer dig, er der date()i ovenstående eksempel en konstruktør af dateklassen. Konstruktøren tager tre argumenter: år, måned og dag.

Variablen a er et dateobjekt.

Vi kan kun importere dateklasse fra datetimemodulet. Sådan gør du:

  from datetime import date a = date(2019, 4, 13) print(a)

Eksempel 4: Få aktuel dato

Du kan oprette et dateobjekt, der indeholder den aktuelle dato ved hjælp af en klassemetode med navnet today(). Sådan gør du:

  from datetime import date today = date.today() print("Current date =", today) 

Eksempel 5: Hent dato fra et tidsstempel

Vi kan også oprette dateobjekter ud fra et tidsstempel. Et Unix-tidsstempel er antallet af sekunder mellem en bestemt dato og 1. januar 1970 ved UTC. Du kan konvertere et tidsstempel til dato ved hjælp af fromtimestamp()metoden.

  from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp) 

Når du kører programmet, vil output være:

 Dato = 11-01-2012

Eksempel 6: Udskriv dagens år, måned og dag

Vi kan nemt få år, måned, dag, ugedag osv. Fra datoobjektet. Sådan gør du:

  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 instanseret fra timeklassen repræsenterer den lokale tid.

Eksempel 7: Tidsobjekt til at repræsentere 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ører programmet, vil output være:

 a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566 

Eksempel 8: Udskriv time, minut, sekund og mikrosekund

Når du har oprettet et timeobjekt, kan du nemt udskrive dets attributter som time, minut 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 kører eksemplet, vil output være:

 time = 11 minut = 34 sekund = 56 mikrosekund = 0 

Bemærk, at vi ikke har bestået mikrosekundargument. Derfor 0udskrives dens standardværdi .

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:

  1. en streng, der repræsenterer dato og klokkeslæt
  2. formatkode svarende til det første argument

Forresten %d, %Bog %Yformatkoder bruges til henholdsvis dag, måned (fuldt navn) og år.

Besøg Python strptime () for at lære mere.

Håndtering af tidszone i Python

Antag, du arbejder på et projekt og har brug for at vise dato og tid baseret på deres tidszone. I stedet for at prøve at håndtere tidszonen selv, foreslår vi, at du bruger et 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ører programmet, vil output være omtrent som:

 Lokal tid: 2018-12-20 13: 10: 44.260462 Amerika / New_York tid: 2018-12-20 13: 10: 44.260462 Europa / London tid: 2018-12-20 13: 10: 44.260462 

Her er datetime_NY og datetime_London datetime-objekter, der indeholder den aktuelle dato og klokkeslæt for deres respektive tidszone.

Interessante artikler...