No Python, data e hora não são um tipo de dados próprio, mas um módulo chamado datetimepode ser importado para trabalhar com a data e também com a hora. O módulo Datetime vem integrado ao Python, portanto, não há necessidade de instalá-lo externamente.

O módulo Datetime fornece classes para trabalhar com data e hora. Essas classes fornecem uma série de funções para lidar com datas, horas e intervalos de tempo. Data e data e hora são um objeto em Python, portanto, quando você os manipula, está na verdade manipulando objetos e não strings ou carimbos de data / hora.

As classes datetime são categorizadas em 6 classes principais -

  • data - Uma data ingênua idealizada, assumindo que o calendário gregoriano atual sempre esteve, e sempre estará, em vigor. Seus atributos são ano, mês e dia.
  • hora - uma hora idealizada, independente de qualquer dia em particular, assumindo que todo dia tem exatamente 24 * 60 * 60 segundos. Seus atributos são hora, minuto, segundo, microssegundo e tzinfo.
  • datetime - é uma combinação de data e hora junto com os atributos ano, mês, dia, hora, minuto, segundo, microssegundo e tzinfo.
  • timedelta - Uma duração que expressa a diferença entre duas instâncias de data, hora ou data e hora para resolução de microssegundos.
  • tzinfo - Fornece objetos de informação de fuso horário.
  • timezone - Uma classe que implementa a classe base abstrata tzinfo como um deslocamento fixo do UTC (Novo na versão 3.2).

Aula de encontro

Quando um objeto desta classe é instanciado, ele representa uma data no formato YYYY-MM-DD. O construtor desta classe precisa de três argumentos obrigatórios ano, mês e data.

Sintaxe do construtor:



classe datetime.date (ano, mês, dia)

Os argumentos devem estar no seguinte intervalo -

  • MINYEAR <= ano <= MAXYEAR
  • 1 <= mês <= 12
  • 1 <= dia <= número de dias em determinado mês e ano

Observação - Se o argumento não for um inteiro, ele gerará a TypeErrore, se estiver fora do intervalo, a ValueErrorserá gerado.

from datetime import date 
  
my_date = date(1996, 12, 11) 
  
print("Date passed as argument is", my_date) 
  

Resultado:

A data passada como argumento é 11/12/1996
Traceback (última chamada mais recente):
  Arquivo "/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py", linha 14, em <module>
    my_date = date (1996, 12, 39)
ValueError: o dia está fora do intervalo do mês
Traceback (última chamada mais recente):
  Arquivo "/home/53b974e10651f1853eee3c004b48c481.py", linha 18, em <module>
    my_date = date ('1996', 12, 11)
TypeError: um inteiro é necessário (obtido tipo str)
</module> </module>

Data atual

Para retornar a today() função de data local atual da classe de data é usada. A função today() vem com vários atributos (ano, mês e dia). Eles podem ser impressos individualmente.

from datetime import date 
today = date.today() 
  
print("Today's date is", today) 
print("Date components", today.year, today.month, today.day) 

Resultado:

A data de hoje é 25/10/2019
Componentes de data 2019 10 25

As diferentes funções disponíveis na classe de data são -

Nome da função Descrição
fromtimestamp (timestamp) Retorna a data local correspondente ao timestamp POSIX
fromordinal (ordinal) Retorne a data correspondente ao ordinal gregoriano proléptico, onde 1 de janeiro do ano 1 tem o ordinal 1.
fromisoformat (date_string) Retorne uma data correspondente a date_string fornecida no formato AAAA-MM-DD:
fromisocalendar (ano, semana, dia) Retorne uma data correspondente à data do calendário ISO especificada por ano, semana e dia.

Aula de tempo

O objeto Time representa a hora local, independente de qualquer dia.
Sintaxe do construtor:

classe datetime.time (hora = 0, minuto = 0, segundo = 0, microssegundo = 0, tzinfo = Nenhum, *, dobra = 0)

Todos os argumentos são opcionais. tzinfo pode ser, Nonecaso contrário, todos os atributos devem ser inteiros no seguinte intervalo -



  • 0 <= hora <24
  • 0 <= minuto <60
  • 0 <= segundo <60
  • 0 <= microssegundo <1000000
  • dobrar em [0, 1]
from datetime import time 
my_time = time(13, 24, 56) 
  
print("Entered time", my_time) 
my_time = time(minute = 12) 
print("\nTime with one argument", my_time) 
my_time = time() 
print("\nTime without argument", my_time) 
  

Resultado:

Horário inserido 13:24:56
Tempo com um argumento 00:12:00
Tempo sem argumento 00:00:00
Traceback (última chamada mais recente):
  Arquivo "/home/95ff83138a1b3e67731e57ec6dddef25.py", linha 21, em <module>
    imprimir (hora (hora = 26))
ValueError: a hora deve estar em 0..23
Traceback (última chamada mais recente):
  Arquivo "/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py", linha 21, em <module>
    imprimir (hora (hora = '23 '))
TypeError: um inteiro é necessário (obtido tipo str)
</module> </module>

Depois de criar um objeto de tempo, seus atributos também podem ser impressos separadamente.

from datetime import time 
  
Time = time(11, 34, 56) 
  
print("hour =", Time.hour) 
print("minute =", Time.minute) 
print("second =", Time.second) 
print("microsecond =", Time.microsecond) 

Resultado:

hora = 11
minuto = 34
segundo = 56
microssegundo = 0

Aula de data e hora

Informações sobre data e hora estão contidas nesta aula. Como um objeto de data, datetime assume o calendário gregoriano atual estendido em ambas as direções; como um objeto de tempo, datetime assume que há exatamente 3600 * 24 segundos em cada dia.

Sintaxe do construtor:

classe datetime.datetime (ano, mês, dia, hora = 0, minuto = 0, segundo = 0, microssegundo = 0, tzinfo = Nenhum, *, dobra = 0)

Os argumentos de ano, mês e dia são obrigatórios. tzinfo pode ser None, o resto todos os atributos devem ser um número inteiro no seguinte intervalo -

  • MINYEAR <= ano <= MAXYEAR
  • 1 <= mês <= 12
  • 1 <= dia <= número de dias em determinado mês e ano
  • 0 <= hora <24
  • 0 <= minuto <60
  • 0 <= segundo <60
  • 0 <= microssegundo <1000000
  • dobrar em [0, 1]

Nota - Passar um argumento diferente de inteiro levantará a TypeErrore os argumentos passign fora do intervalo serão levantados ValueError.

from datetime import datetime 
a = datetime(1999, 12, 12) 
print(a) 
a = datetime(1999, 12, 12, 12, 12, 12, 342380) 
print(a) 

Resultado:

12/12/1999 00:00:00
12: 12: 12.342380 de 1999-12.

Depois de criar um objeto datetime, seus atributos também podem ser impressos separadamente.



from datetime import datetime 
  
a = datetime(1999, 12, 12, 12, 12, 12) 
  
print("year =", a.year) 
print("month =", a.month) 
print("hour =", a.hour) 
print("minute =", a.minute) 
print("timestamp =", a.timestamp()) 

Resultado:

ano = 1999
mês = 12
hora = 12
minuto = 12
timestamp = 945000732.0

Data e hora atuais

Você pode imprimir a data e hora atuais usando a now()função. A função now() retorna a data e hora locais atuais.

from datetime import datetime 
today = datetime.now() 
  
print("Current date and time is", today) 

Resultado:

A data e a hora atuais são 25/10/2019 11: 12: 11.289834

Outras funções da classe datetime são -

Nome da função Descrição
utcnow() Retorne a data e hora UTC atuais, com tzinfo Nenhum.
fromtimestamp (timestamp, tz = Nenhum) Retorne a data e hora local correspondentes ao carimbo de data / hora POSIX.
utcfromtimestamp (timestamp) Retorne a data e hora UTC correspondente ao carimbo de data / hora POSIX, com tzinfo Nenhum.
fromordinal (ordinal) Retorne a data e hora correspondente ao ordinal gregoriano proléptico, em que 1 de janeiro do ano 1 tem o ordinal 1.
combinar (data, hora, tzinfo = self.tzinfo) Retorne um novo objeto datetime cujos componentes de data são iguais aos do objeto de data fornecido e cujos componentes de tempo são iguais aos do objeto de tempo fornecido.
fromisoformat (date_string) Retorne um datetime correspondente a date_string em um dos formatos emitidos por date.isoformat() e datetime.isoformat().
strptime (data_string, formato) Retorne uma data e hora correspondente a date_string, analisada de acordo com o formato.

Aula Timedelta

A função Python timedelta() está presente na biblioteca datetime, que geralmente é usada para calcular diferenças em datas e também pode ser usada para manipulações de datas em Python. É uma das maneiras mais fáceis de realizar manipulações de datas.

Sintaxe do construtor:

classe datetime.timedelta (dias = 0, segundos = 0, microssegundos = 0, milissegundos = 0, minutos = 0, horas = 0, semanas = 0)

Retorna: Data

    
from datetime import datetime, timedelta  
    
    
ini_time_for_now = datetime.now()  
    
print ("initial_date", str(ini_time_for_now))  
    
future_date_after_2yrs = ini_time_for_now + timedelta(days = 730
    
future_date_after_2days = ini_time_for_now + timedelta(days = 2
    
print('future_date_after_2yrs:', str(future_date_after_2yrs))  
print('future_date_after_2days:', str(future_date_after_2days))  

Resultado:

data_inicial 25/10/2019 12: 01: 01.227848
future_date_after_2yrs: 2021-10-24 12: 01: 01.227848
future_date_after_2days: 2019-10-27 12: 01: 01.227848

A diferença de horário também pode ser encontrada usando esta classe.



from datetime import datetime, timedelta  
    
ini_time_for_now = datetime.now()  
    
print ("initial_date", str(ini_time_for_now))  
    
new_final_time = ini_time_for_now + 
                 timedelta(days = 2
    
print ("new_final_time", str(new_final_time))  
    
    
print('Time difference:', str(new_final_time - 
                             ini_time_for_now))  

Resultado:

data_inicial 25/10/2019 12: 02: 32.799814
new_final_time 27/10/2019 12: 02: 32.799814
Diferença de horário: 2 dias, 0:00:00

Aula Tzinfo

Esta é uma classe base abstrata, o que significa que esta classe não deve ser instanciada diretamente. Uma instância de (uma subclasse concreta de) tzinfo pode ser passada para os construtores de objetos datetime e time. Os últimos objetos veem seus atributos como estando na hora local, e o objeto tzinfo suporta métodos que revelam o deslocamento da hora local do UTC, o nome do fuso horário e o deslocamento do DST, todos relativos a um objeto de data ou hora passado a eles. Para saber mais sobre esta aula clique aqui .

Classe de fuso horário

A classe de fuso horário é uma subclasse de tzinfo, cada instância da qual representa um fuso horário definido por um deslocamento fixo do UTC.

Sintaxe do construtor:

classe datetime.timezone (deslocamento, nome = Nenhum)

O argumento de deslocamento deve ser especificado como um objeto timedelta que representa a diferença entre a hora local e o UTC.

Nota - ValueError será gerado se o deslocamento não estiver entre -timedelta(hours=24)e timedelta(hours=24).