Como converter string para data em Python

  1. datetime.strptime() para converter string para datetime
  2. Python datetime.strptime() Exemplos

Este tutorial introduz como converter string para datetime em Python e também lista alguns exemplos de códigos para cobrir formatos populares de datetime string.

datetime.strptime() para converter string para datetime

No tutorial anterior, aprendemos como obter a data/hora em formato de string utilizando o método datetime.strftime(). Vamos utilizar o método datetime.strptime() para fazer a conversão reversa para obter o objeto datetime. f e p nesses dois métodos significam format e parse respectivamente.

O método datetime.strptime() analisa a string de entrada com o formato datetime dado e retorna o objeto datetime.

O exemplo base para utilizar este método strptime() é mostrado abaixo,

from datetime import datetime

datetime.strptime("2018-01-31", "%Y-%m-%d")

O resultado será

datetime.datetime(2018, 1, 31, 0, 0)

As diretrizes dos códigos de formato de string são listadas aqui para sua referência

Directiva Significado Exemplo
%a Dia da semana como nome abreviado do locale. Sun, Mon, …, Sat (en_US);So, Mo, …, Sa (de_DE)
%A Dia da semana como nome completo do locale. Domingo, segunda-feira, …, sábado (en_US);Sonntag, Montag, …, Samstag (de_DE)
%w Dia da semana como um número decimal, onde 0 é domingo e 6 é sábado. 0, 1, …, 6
%d Dia do mês como um número decimal de zero casas decimais. 01, 02, …, 31
%b Mês como o nome abreviado do locale. Jan, Fev, …, Dec (en_US);Jan, Fev, …, Dez (de_DE)
%B Mês como nome completo do locale. Janeiro, Fevereiro, …, Dezembro (en_US);Januar, Februar, …, Dezember (de_DE)
%m Mês como um número decimal de zero casas decimais. 01, 02, …, 12
%y Ano sem século como um número decimal sem casas decimais. 00, 01, …, 99
%Y Ano com o século como número decimal. 0001, 0002, …, 2013, 2014, …, 9998, 9999
%H Hora (relógio de 24 horas) como um número decimal de zero casas decimais. 00, 01, …, 23
%I Hora (relógio de 12 horas) como um número decimal de zero casas decimais. 01, 02, …, 12
%p Equivalente local de AM ou PM. AM, PM (en_US);am, pm (de_DE)
%M Minuto como um número decimal de zero casas decimais. 00, 01, …, 59
%S Segundo como um número decimal de zero casas decimais. 00, 01, …, 59
%f Microssegundo como um número decimal, com teclado zerado à esquerda. 000000, 000001, …, 999999
%z UTC offset na forma ±HHMM[SS](string vazia se o objeto for ingênuo). (vazio), +0000, -0400, +1030
%Z Nome do fuso horário (string vazia se o objeto for ingênuo). (vazio), UTC, EST, CST
%j Dia do ano como um número decimal sem casas decimais. 001, 002, …, 366
%U Número da semana do ano (domingo como primeiro dia da semana) como um número decimal com zero almofadas. Todos os dias de um novo ano anterior ao primeiro domingo são considerados como sendo da semana 0. 00, 01, …, 53
%W Número da semana do ano (segunda-feira como primeiro dia da semana) como um número decimal. Todos os dias de um novo ano anterior à primeira segunda-feira são considerados como da semana 0. 00, 01, …, 53
%c A representação apropriada da data e hora do local. Ter 16 Ago 21:30:00 1988 (pt_US);Di 16 Ago 21:30:00 1988 (de_DE)
%x A representação da data apropriada do local. 16/08/16/88 (Nenhum);16/08/1988 (pt_US);16/08/1988 (de_DE)
%X A representação temporal apropriada do local. 21:30:00 (pt_US);21:30:00 (de_DE)
%% Um caractere literal “%”. %

Python datetime.strptime() Exemplos

7-May-2013 formato

from datetime import datetime

dateString = "7-May-2018"
dateFormatter = "%u-%b-%Y"
datetime.strptime(dateString, dateFormatter)

Resultado:

datetime.datetime(2013, 5, 1, 0, 0)

31/12/2018 formato

from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

Resultado:

datetime.datetime(2013, 12, 31, 0, 0)

Mon, , July 16 2018 formato

from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

Resultado:

datetime.datetime(2018, 7, 16, 0, 0)

Monday, July 16, 2018 20:01:56 formato

from datetime import datetime

dateString = "Monday, July 16, 2018 20:01:56"
dateFormatter = "%A, %B %d, %Y %H:%M:%S"
datetime.strptime(dateString, dateFormatter)

Resultado:

datetime.datetime(2018, 7, 16, 20, 1, 56)

Artigo relacionado - Python String

  • Letras maiúsculas em Python
  • Remover newline da string em Python
  • Artigo relacionado - Python DateTime

  • Contar palavras em string em Python