Python DataHora, HoraDelta, Strftime (formato) com exemplos

โšก Resumo Inteligente

Python O mรณdulo datetime, juntamente com as classes date, time e timedelta, manipula datas, horas e intervalos como objetos. O mรณdulo datetime formata a saรญda com strftime(), analisa strings e calcula momentos futuros ou passados โ€‹โ€‹usando aritmรฉtica timedelta.

  • ๐Ÿ”˜ Cinco classes: O mรณdulo datetime agrupa as classes date, time, datetime, timedelta e tzinfo para manipulaรงรฃo de datas e horas.
  • โ˜‘๏ธ Valores atuais: datetime.now() e date.today() retornam a data e hora atuais, incluindo o nรบmero do dia da semana.
  • โœ… Formataรงรฃo: A funรงรฃo strftime() transforma uma data e hora em texto legรญvel usando cรณdigos de controle como %Y, %A e %H.
  • ๐Ÿงช Timedelta: Um objeto timedelta mede uma duraรงรฃo e prevรช datas futuras ou passadas por meio de adiรงรฃo e subtraรงรฃo.tracรงรฃo.
  • ๐Ÿ› ๏ธ Diretivas: Os mesmos cรณdigos de controle acionam a funรงรฃo strftime() para saรญda e a funรงรฃo strptime() para leitura de uma string de volta para um objeto datetime.
  • ๐Ÿค– Fluxos de trabalho de IA: Os fluxos de trabalho de aprendizado de mรกquina derivam caracterรญsticas de data e hora, como dia da semana e hora, para modelos de sรฉries temporais.

Python DateTime

In Python, data, hora e datahora As classes fornecem diversas funรงรตes para lidar com datas, horas e intervalos de tempo. Data e hora em Python Sรฃo objetos, portanto, ao manipulรก-los, vocรช estรก de fato manipulando objetos e nรฃo strings ou timestamps. Sempre que vocรช manipular datas ou horas, precisarรก importar o mรณdulo datetime.

As classes de data e hora em Python sรฃo categorizadas em 5 classes principais.

  • data โ€“ Manipular apenas a data (mรชs, dia, ano)
  • time โ€“ Hora independente do dia (hora, minuto, segundo, microssegundo)
  • datetime โ€“ Combinaรงรฃo de hora e data (mรชs, dia, ano, hora, segundo, microssegundo)
  • timedeltaโ€” Uma duraรงรฃo de tempo usada para manipular datas
  • tzinfoโ€” Um abstracClasse t para lidar com fusos horรกrios

Como usar a classe Date e DateTime

Etapa 1) Antes de executar o cรณdigo para o formato de data e hora em Python, รฉ importante que vocรช importe o Python mรณdulos de data e hora conforme mostrado na imagem abaixo.

Usar classe Date e DateTime

Essas instruรงรตes de importaรงรฃo sรฃo peรงas de funcionalidade predefinidas no Python Biblioteca que permite manipular datas e horas sem escrever nenhum cรณdigo.

Considere os seguintes pontos antes de executar o Python cรณdigo de formato de data e hora

from datetime import date

Esta linha diz ao Python interpretador para importar a classe de data do mรณdulo datetime em PythonNรฃo estamos escrevendo o cรณdigo para essa funcionalidade de data, mas simplesmente a estamos importando para nosso uso.

Imprimir data usando date.today()

A funรงรฃo date.today() possui diversas propriedades associadas a ela. Podemos imprimir o dia/mรชs/ano individualmente e muitas outras informaรงรตes.

Vamos ver um exemplo

Imprimir data usando date.today()

Nรบmero do dia da semana de hoje

A funรงรฃo date.today() tambรฉm fornece o nรบmero do dia da semana. Aqui estรก a tabela de dias da semana que comeรงa com Monday como 0 e domingo como 6.

Dia Nรบmero do dia da semana
Monday 0
Terรงa-feira 1
Wednesday 2
Quinta-feira 3
Sexta-feira 4
Sรกbado 5
Domingo 6

Weekday Number รฉ รบtil para matrizes cujo รญndice depende do dia da semana.

Imprimir data usando date.today()

Etapa 2) Em seguida, criamos uma instรขncia do objeto de data.

Usar classe Date e DateTime

Etapa 3) Em seguida, imprimimos a data e executamos o cรณdigo.

Usar classe Date e DateTime

O resultado รฉ o esperado.

Python Data e hora atuais: agora() hoje()

Passo 1) Assim como os objetos de data, tambรฉm podemos usar โ€œOBJETOS DATA HORAโ€ in Python. Python objetos de data e hora fornecem data junto com hora em horas, minutos, segundos e milissegundos.

Python Data e hora atuais

Quando executamos o cรณdigo para datetime, ele fornece a saรญda com a data e hora atuais.

Passo 2) Com o โ€œOBJETO DATETIMEโ€, vocรช tambรฉm pode chamar a classe de tempo. Suponha que queiramos imprimir apenas a hora atual, sem a data.

t = datetime.time(datetime.now())
  • Havรญamos importado a classe de tempo. Estaremos atribuindo a ele o valor atual do tempo usando datetime.now()
  • Estamos atribuindo o valor do tempo atual ร  variรกvel t.

E isso vai me dar o tempo certo. Entรฃo, vamos executar este programa.

Python Data e hora atuais

Certo, entรฃo vocรช pode ver que aqui eu tenho a data e a hora. E na linha seguinte, eu tenho apenas a hora.

Passo 3) Aplicaremos nosso indexador de dias da semana ร  nossa lista de arrays de dias da semana para saber qual dia รฉ hoje.

  • O operador de dias da semana (wd) recebe um nรบmero de (0-6) dependendo do dia da semana atual. Aqui declaramos o array da lista de dias (Seg, Ter, Quaโ€ฆDom).
  • Use esse valor de รญndice para saber que dia รฉ hoje. No nosso caso, รฉ o nรบmero 2 e representa quarta-feira, portanto, na saรญda serรก impresso โ€œO que รฉ quarta-feiraโ€.

Python Data e hora atuais

Aqui estรก o cรณdigo completo para obter a data e hora atuais usando datetime agora

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

Como formatar a saรญda de data e hora com Strftime()

Atรฉ agora, aprendemos como usar datetime e date. objeto em Python. Avanรงaremos um passo adiante e aprenderemos como usar uma funรงรฃo de formataรงรฃo para formatar hora e data.

Passo 1) Primeiro veremos um passo simples de como formatar o ano. ร‰ melhor entender com um exemplo.

Formatar saรญda de data e hora com Strftime()

  • Utilizou-se o โ€œfunรงรฃo strftimeโ€ para formataรงรฃo.
  • Esta funรงรฃo usa diferentes cรณdigo de controle para dar uma saรญda.
  • Cada cรณdigo de controle corresponde a diferentes parรขmetros, como ano, mรชs, dia da semana e data. [(%y/%Y โ€“ Ano), (%a/%A- dia da semana), (%b/%B- mรชs), (%d โ€“ dia do mรชs)] .
  • No nosso caso, รฉ (โ€œ%Yโ€) que se assemelha ao ano, imprime o ano completo com o sรฉculo (por exemplo, 2018).

Passo 2) Agora se vocรช substituir (โ€œ%Yโ€) por minรบsculo, ou seja, ( โ€œ%y) e executar o cรณdigo a saรญda exibirรก apenas (18) e nรฃo (2018). O sรฉculo do ano nรฃo serรก exibido conforme mostrado na imagem abaixo

Formatar saรญda de data e hora com Strftime()

Passo 3) A funรงรฃo strf permite declarar a data, o dia, o mรชs e o ano separadamente. Alรฉm disso, com pequenas alteraรงรตes no cรณdigo de controle da funรงรฃo strftime, รฉ possรญvel formatar o estilo do texto.

Formatar saรญda de data e hora com Strftime()

Dentro da funรงรฃo strftime, se vocรช substituir (%a) por A maiรบsculo, ou seja, (%A), a saรญda serรก impressa como โ€œFridayโ€ em vez de apenas a abreviaรงรฃo โ€œFriโ€.

Formatar saรญda de data e hora com Strftime()

Passo 4) Com a ajuda da funรงรฃo โ€œStrftimeโ€ tambรฉm podemos recuperar a hora, data do sistema local ou ambos.

  1. %C- indica a data e hora local
  2. %x- indica a data local
  3. %X- indica a hora local

Formatar saรญda de data e hora com Strftime()

Na saรญda, vocรช pode ver o resultado conforme o esperado

Passo 5) A โ€œfunรงรฃo strftimeโ€ permite chamar a hora em qualquer formato de 24 horas ou 12 horas.

Formatar saรญda de data e hora com Strftime()

Apenas definindo o cรณdigo de controle como %I/H para hora, % M para minuto, %S para segundo, pode-se chamar o tempo para diferentes formatos

12 horas a hora รฉ declarada [print now.strftime(โ€œ%I:%M:%S %p) ]

24 horas a hora รฉ declarada [print now.strftime(โ€œ%H:%Mโ€)]

Aqui estรก o cรณdigo completo para converter data e hora em objeto String.

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

O que รฉ Timedelta em Python?

Tempodelta em Python รฉ um objeto que representa a duraรงรฃo. ร‰ usado principalmente para calcular a duraรงรฃo entre duas datas e horรกrios. Tambรฉm รฉ usado para recuperar o objeto com alguma diferenรงa de data e horรกrio. O objeto timedelta suporta operaรงรตes matemรกticas como adiรงรตes, subtraรงรตes e multiplicaรงรตes.tracoperaรงรตes, multiplicaรงรฃo, divisรฃo, etc.

Como usar objetos Timedelta

Com Python objetos timedelta, vocรช pode estimar o tempo para o futuro e o passado. Em outras palavras, รฉ um intervalo de tempo para prever qualquer dia, data ou hora especial.

Lembre-se que esta funรงรฃo nรฃo serve para imprimir a hora ou data, mas sim algo para CALCULAR sobre o futuro ou passadoVamos ver um Python Exemplo de timedelta para entender melhor.

Passo 1) Para executar objetos Timedelta, vocรช precisa primeiro declarar a instruรงรฃo de importaรงรฃo e depois executar o cรณdigo

  1. Escreva a instruรงรฃo de importaรงรฃo para timedelta
  2. Agora escreva o cรณdigo para imprimir o objeto do delta do tempo, conforme mostrado na captura de tela
  3. Execute o cรณdigo. O timedelta representa um intervalo de 365 dias, 8 horas e 15 minutos e imprime o mesmo

Objetos Timedelta

Confuso? O prรณximo passo ajudarรก-

Passo 2) Vamos obter a data e hora de hoje para verificar se nossa instruรงรฃo de importaรงรฃo estรก funcionando bem. Quando o cรณdigo รฉ executado, ele imprime a data de hoje, o que significa que nossa instruรงรฃo de importaรงรฃo estรก funcionando bem

Objetos Timedelta

Passo 3) Veremos como podemos recuperar a data daqui a um ano por meio de objetos delta. Quando executamos o cรณdigo, ele fornece a saรญda conforme esperado.

Objetos Timedelta

Passo 4) Outro exemplo de como o delta de tempo pode ser usado para calcular a data futura a partir da data e hora atuais

Objetos Timedelta

Passo 5) Vejamos um exemplo mais complexo. Gostaria de determinar quantos dias se passaram do Ano Novo. Aqui estรก como procederemos

  • Usando hoje=date.today() obteremos a data de hoje
  • Sabemos que o ano novo รฉ sempre no dia 1ยบ de janeiro, mas o ano pode ser diferente. Usando nyd= date(today.year,1,1) armazenamos o novo ano na variรกvel nyd
  • Se nyd < hoje: compara se a data atual รฉ posterior ao novo ano. Se for, entra no loop while.
  • ((today-nyd).days) fornece a diferenรงa entre a data atual e o ano novo em DIAS

Objetos Timedelta

O resultado mostra que โ€œo dia de Ano Novo jรก passou hรก 11 diasโ€.

Aqui estรก o cรณdigo de trabalho completo

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2 Exemplo

Os exemplos a seguir mostram as mesmas operaรงรตes de data e hora escritas para Python 2, onde print รฉ uma instruรงรฃo em vez de uma funรงรฃo. Use essas versรตes somente ao manter sistemas legados. Python 2 cรณdigos.

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

Perguntas Frequentes

Use `datetime.strptime(text, format)` para analisar uma string e convertรช-la em um objeto `datetime`. Passe as mesmas diretivas que `strftime()` usa, entรฃo "2018-06-29" serรก lido como "%Y-%m-%d". Como o inverso de `strftime()`, `strptime()` transforma um texto legรญvel em um objeto `datetime` que vocรช pode usar para cรกlculos.

Um comando datetime sem informaรงรตes de fuso horรกrio รฉ ingรชnuo; adicionar um fuso horรกrio o torna consciente. Use o mรณdulo zoneinfo integrado (Python 3.9+) ou o pacote pytz para localizar datas e horas e, em seguida, converter entre fusos horรกrios para que os cรกlculos permaneรงam corretos em todas as regiรตes.

Chame o mรฉtodo `timestamp()` em um objeto `datetime` para obter os segundos desde a รฉpoca Unix como um nรบmero de ponto flutuante, por exemplo, `datetime.now().timestamp()`. Para fazer o inverso, `datetime.fromtimestamp(value)` reconstrรณi um objeto `datetime` a partir de um timestamp Unix.

Ambas as funรงรตes retornam a data e hora locais atuais, mas `datetime.now()` aceita um argumento opcional de fuso horรกrio, enquanto `datetime.today()` nรฃo. Para cรณdigo que leva em consideraรงรฃo o fuso horรกrio, prefira `datetime.now(tz)` para que o resultado inclua o deslocamento correto em vez de permanecer sem o valor real.

Sim. O mรณdulo de data e hora รฉ fornecido com PythonPortanto, nรฃo รฉ necessรกrio instalar com o pip. Importe-o com โ€œfrom datetime import datetime, date, time, timedeltaโ€ e as classes date, time, datetime, timedelta e tzinfo ficarรฃo disponรญveis imediatamente.

Chame o mรฉtodo isoformat() para obter uma string padrรฃo ISO 8601, como โ€œ2018-06-29T08:15:27โ€. Para um objeto de data, ele retorna โ€œAAAA-MM-DDโ€. O mรฉtodo isoformat() nรฃo precisa de cรณdigos de controle, diferentemente do mรฉtodo strftime(), que constrรณi layouts personalizados a partir de diretivas.

Os fluxos de trabalho de aprendizado de mรกquina transformam registros de data e hora brutos em recursos como dia da semana, hora, mรชs e tempo decorrido, usando datetime e timedelta. Esses recursos de data processados โ€‹โ€‹ajudam modelos de sรฉries temporais e sistemas de previsรฃo de IA a detectar padrรตes sazonais e cรญclicos.

Sim. O GitHub Copilot e os assistentes de IA com agentes geram strings de formato strftime(), cรกlculos de timedelta e conversรตes de fuso horรกrio a partir de um breve comentรกrio, e podem explicar diretivas complexas. Sempre execute o cรณdigo sugerido, pois รฉ fรกcil errar no tratamento de datas e deslocamentos.

Resuma esta postagem com: