Python datetime (med exempel)

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 datetimeuttalande.

En av klasserna som definieras i datetimemodulen är datetimeklass. Vi använde sedan now()metoden för att skapa ett datetimeobjekt 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 dateklassen för att få ett dateobjekt 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 dateobjekt från dateklassen. 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 dateklassen. Konstruktören tar tre argument: år, månad och dag.

Variabeln a är ett dateobjekt.

Vi kan bara importera dateklass från datetimemodulen. Här är hur:

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

Exempel 4: Få aktuellt datum

Du kan skapa ett dateobjekt 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 dateobjekt 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 timeklassen 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 timeobjekt 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 0skrivs 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:

  1. en sträng som representerar datum och tid
  2. formatkod motsvarande det första argumentet

Förresten, %d, %Boch %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.

Intressanta artiklar...