Dominando o strftime() do Python: Converter Datas e Horas em Strings Legíveis
Python strftime()
Neste artigo, você aprenderá a converter objetos date, time e datetime em suas representações de string equivalentes (com a ajuda de exemplos práticos).
Vídeo: Datas e Horas em Python
O método strftime() retorna uma string representando data e hora usando objetos date, time ou datetime.
Exemplo 1: datetime para string usando strftime()
O programa abaixo converte um objeto datetime contendo a data e hora atuais em diferentes formatos de string.
from datetime import datetime
now = datetime.now() # data e hora atuais
year = now.strftime("%Y")
print("ano:", year)
month = now.strftime("%m")
print("mês:", month)
day = now.strftime("%d")
print("dia:", day)
time = now.strftime("%H:%M:%S")
print("hora:", time)
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("data e hora:", date_time)
Ao executar o programa, a saída será semelhante a:
ano: 2018 mês: 12 dia: 24 hora: 04:59:31 data e hora: 12/24/2018, 04:59:31
Aqui, year, day, time e date_time são strings, enquanto now é um objeto datetime.
Como o strftime() funciona?
No programa acima, %Y, %m, %d, etc., são códigos de formato. O método strftime() recebe um ou mais códigos de formato como argumento e retorna uma string formatada com base neles.
- Importamos a classe
datetimedo módulodatetime. Isso é necessário porque objetos da classedatetimepodem acessar o métodostrftime(). - O objeto
datetimecontendo a data e hora atuais é armazenado na variável now. - O método
strftime()pode ser usado para criar strings formatadas. - A string passada para o
strftime()pode conter mais de um código de formato.
Exemplo 2: Criando string a partir de um timestamp
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
print("Objeto data/hora:", date_time)
d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Saída 2:", d)
d = date_time.strftime("%d %b, %Y")
print("Saída 3:", d)
d = date_time.strftime("%d %B, %Y")
print("Saída 4:", d)
d = date_time.strftime("%I%p")
print("Saída 5:", d)
Ao executar o programa, a saída será:
Objeto data/hora: 2018-06-12 09:55:22 Saída 2: 06/12/2018, 09:55:22 Saída 3: 12 Jun, 2018 Saída 4: 12 June, 2018 Saída 5: 09AM
Lista de Códigos de Formato
A tabela abaixo mostra todos os códigos que você pode passar para o método strftime().
| Diretiva | Significado | Exemplo |
|---|---|---|
%a | Nome abreviado do dia da semana. | Dom, Seg, ... |
%A | Nome completo do dia da semana. | Domingo, Segunda-feira, ... |
%w | Dia da semana como número decimal. | 0, 1, ..., 6 |
%d | Dia do mês como decimal com zero à esquerda. | 01, 02, ..., 31 |
%-d | Dia do mês como número decimal (sem zero à esquerda). | 1, 2, ..., 30 |
%b | Nome abreviado do mês. | Jan, Fev, ..., Dez |
%B | Nome completo do mês. | Janeiro, Fevereiro, ... |
%m | Mês como número decimal com zero à esquerda. | 01, 02, ..., 12 |
%-m | Mês como número decimal (sem zero à esquerda). | 1, 2, ..., 12 |
%y | Ano sem século como decimal com zero à esquerda. | 00, 01, ..., 99 |
%-y | Ano sem século como número decimal. | 0, 1, ..., 99 |
%Y | Ano com século como número decimal. | 2013, 2019, etc. |
%H | Hora (relógio 24h) como decimal com zero à esquerda. | 00, 01, ..., 23 |
%-H | Hora (relógio 24h) como número decimal. | 0, 1, ..., 23 |
%I | Hora (relógio 12h) como decimal com zero à esquerda. | 01, 02, ..., 12 |
%-I | Hora (relógio 12h) como número decimal. | 1, 2, ..., 12 |
%p | AM ou PM do locale. | AM, PM |
%M | Minuto como decimal com zero à esquerda. | 00, 01, ..., 59 |
%-M | Minuto como número decimal. | 0, 1, ..., 59 |
%S | Segundo como decimal com zero à esquerda. | 00, 01, ..., 59 |
%-S | Segundo como número decimal. | 0, 1, ..., 59 |
%f | Microssegundo como número decimal, preenchido com zeros à esquerda. | 000000 - 999999 |
%z | Deslocamento UTC no formato +HHMM ou -HHMM. | |
%Z | Nome do fuso horário. | |
%j | Dia do ano como decimal com zero à esquerda. | 001, 002, ..., 366 |
%-j | Dia do ano como número decimal. | 1, 2, ..., 366 |
%U | Número da semana do ano (Domingo como primeiro dia). | 00, 01, ..., 53 |
%W | Número da semana do ano (Segunda-feira como primeiro dia). | 00, 01, ..., 53 |
%c | Representação apropriada de data e hora do locale. | Mon Sep 30 07:06:05 2013 |
%x | Representação apropriada de data do locale. | 09/30/13 |
%X | Representação apropriada de hora do locale. | 07:06:05 |
%% | Caractere '%' literal. | % |
Exemplo 3: Data e hora apropriadas do locale
from datetime import datetime
timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)
d = date_time.strftime("%c")
print("Saída 1:", d)
d = date_time.strftime("%x")
print("Saída 2:", d)
d = date_time.strftime("%X")
print("Saída 3:", d)
Ao executar o programa, a saída será:
Saída 1: Tue Jun 12 09:55:22 2018 Saída 2: 06/12/18 Saída 3: 09:55:22
Os códigos de formato %c, %x e %X são usados para representação apropriada de data e hora do locale.
Também recomendamos que você verifique Python strptime(). O método strptime() cria um objeto datetime a partir de uma string.
python
- Palavras-chave e Identificadores em Python: Dominando Palavras Reservadas e Convenções de Nomenclatura
- Dominando Tipos de Dados em Python: Guia Prático
- Dominando Operadores em Python: Guia Completo
- Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
- Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
- Expressões Regulares em Python (Módulo re) – Guia Prático
- Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários
- Dominando o Módulo time do Python: Funções, Structs e Exemplos Práticos