Módulo Python datetime com exemplos
No Python, data e hora não são um tipo de dados próprio, mas um módulo chamado datetime
pode 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 TypeError
e, se estiver fora do intervalo, a ValueError
será gerado.
from
datetime
import
date
my_date
=
date(
1996
,
12
,
11
)
(
"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()
(
"Today's date is"
, today)
(
"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, None
caso 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
)
(
"Entered time"
, my_time)
my_time
=
time(minute
=
12
)
(
"\nTime with one argument"
, my_time)
my_time
=
time()
(
"\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
)
(
"hour ="
, Time.hour)
(
"minute ="
, Time.minute)
(
"second ="
, Time.second)
(
"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 TypeError
e os argumentos passign fora do intervalo serão levantados ValueError
.
from
datetime
import
datetime
a
=
datetime(
1999
,
12
,
12
)
(a)
a
=
datetime(
1999
,
12
,
12
,
12
,
12
,
12
,
342380
)
(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
)
(
"year ="
, a.year)
(
"month ="
, a.month)
(
"hour ="
, a.hour)
(
"minute ="
, a.minute)
(
"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()
(
"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()
(
"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
)
(
'future_date_after_2yrs:'
,
str
(future_date_after_2yrs))
(
'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()
(
"initial_date"
,
str
(ini_time_for_now))
new_final_time
=
ini_time_for_now
+
\
timedelta(days
=
2
)
(
"new_final_time"
,
str
(new_final_time))
(
'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)
.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva