Python datetime (con ejemplos)

En este artículo, aprenderá a manipular la fecha y la hora en Python con la ayuda de ejemplos.

Python tiene un módulo llamado datetime para trabajar con fechas y horas. Creemos algunos programas simples relacionados con la fecha y la hora antes de profundizar.

Ejemplo 1: Obtener la fecha y la hora actuales

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

Cuando ejecute el programa, la salida será algo como:

 2018-12-19 09: 26: 03.478039

Aquí, hemos importado el módulo de fecha y hora usando import datetimestatement.

Una de las clases definidas en el datetimemódulo es datetimeclase. Luego usamos el now()método para crear un datetimeobjeto que contiene la fecha y hora local actual.

Ejemplo 2: Obtener la fecha actual

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

Cuando ejecute el programa, la salida será algo como:

 2018-12-19

En este programa, hemos utilizado el today()método definido en la dateclase para obtener un dateobjeto que contiene la fecha local actual.

¿Qué hay dentro de datetime?

Podemos usar la función dir () para obtener una lista que contenga todos los atributos de un módulo.

 import datetime print(dir(datetime))

Cuando ejecute el programa, la salida será:

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

Las clases más utilizadas en el módulo de fecha y hora son:

  • clase de fecha
  • clase de tiempo
  • clase datetime
  • clase timedelta

clase datetime.date

Puede crear instancias de dateobjetos de la dateclase. Un objeto de fecha representa una fecha (año, mes y día).

Ejemplo 3: objeto de fecha para representar una fecha

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

Cuando ejecute el programa, la salida será:

 2019-04-13

Si se lo está preguntando, date()en el ejemplo anterior hay un constructor de la dateclase. El constructor toma tres argumentos: año, mes y día.

La variable a es un dateobjeto.

Solo podemos importar la dateclase del datetimemódulo. Así es cómo:

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

Ejemplo 4: obtener la fecha actual

Puede crear un dateobjeto que contenga la fecha actual utilizando un método de clase llamado today(). Así es cómo:

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

Ejemplo 5: obtener la fecha de una marca de tiempo

También podemos crear dateobjetos a partir de una marca de tiempo. Una marca de tiempo Unix es el número de segundos entre una fecha en particular y el 1 de enero de 1970 en UTC. Puede convertir una marca de tiempo a la fecha usando el fromtimestamp()método.

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

Cuando ejecute el programa, la salida será:

 Fecha = 2012-01-11

Ejemplo 6: Imprima el año, mes y día de hoy

We can get year, month, day, day of the week etc. from the date object easily. Here's how:

  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

A time object instantiated from the time class represents the local time.

Example 7: Time object to represent time

  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) 

When you run the program, the output will be:

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

Example 8: Print hour, minute, second and microsecond

Once you create a time object, you can easily print its attributes such as hour, minute 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) 

When you run the example, the output will be:

 hour = 11 minute = 34 second = 56 microsecond = 0 

Notice that we haven't passed microsecond argument. Hence, its default value 0 is printed.

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. una cadena que representa la fecha y la hora
  2. código de formato equivalente al primer argumento

Por cierto, los códigos de formato %d, %By %Yse utilizan para día, mes (nombre completo) y año respectivamente.

Visite Python strptime () para obtener más información.

Manejo de la zona horaria en Python

Supongamos que está trabajando en un proyecto y necesita mostrar la fecha y la hora según su zona horaria. En lugar de intentar manejar la zona horaria usted mismo, le sugerimos que utilice un módulo pytZ de terceros.

  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")) 

Cuando ejecute el programa, la salida será algo como:

 Hora local: 2018-12-20 13: 10: 44.260462 America / New_York time: 2018-12-20 13: 10: 44.260462 Europa / London time: 2018-12-20 13: 10: 44.260462 

Aquí, datetime_NY y datetime_London son objetos de fecha y hora que contienen la fecha y hora actuales de su zona horaria respectiva.

Articulos interesantes...