ragfica.pages.dev

Como lidar com datas em formato texto dentro de JSON?

Datas em formato texto dentro de arquivos JSON são um problema comum que pode causar erros de processamento e análise de dados. A solução mais eficaz é converter essas strings para objetos de data nativos do seu ambiente de programação, garantindo consistência e facilitando operações como ordenação, filtragem e cálculos temporais.

Pré-requisitos

Converter strings de data para objetos datetime

O método mais confiável é usar a biblioteca datetime do Python para converter strings de data em objetos datetime. Isso permite operações temporais precisas e elimina ambiguidades de formato.

import json
from datetime import datetime

def parse_date(date_string):
    # Formatos comuns de data
    date_formats = [
        "%Y-%m-%d",
        "%d/%m/%Y",
        "%m/%d/%Y",
        "%Y-%m-%dT%H:%M:%S",
        "%Y-%m-%dT%H:%M:%SZ"
    ]
    
    for fmt in date_formats:
        try:
            return datetime.strptime(date_string, fmt)
        except ValueError:
            continue
    return None

# Carregar JSON
with open('dados.json', 'r') as f:
    data = json.load(f)

# Converter datas
for item in data:
    if 'data' in item and isinstance(item['data'], str):
        item['data'] = parse_date(item['data'])

# Salvar JSON atualizado
with open('dados_processados.json', 'w') as f:
    json.dump(data, f, default=str, indent=2)

Validar e normalizar formatos de data

Para garantir consistência, é importante validar e normalizar todos os formatos de data para um padrão único antes de processar os dados.

def normalize_date(date_obj):
    # Normalizar para formato ISO 8601
    return date_obj.isoformat()

# Aplicar normalização
for item in data:
    if 'data' in item and isinstance(item['data'], datetime):
        item['data'] = normalize_date(item['data'])

Exemplo Prático

Entrada (JSON) Saída (Processada)
{
  "eventos": [
    { "nome": "Reunião", "data": "2024-03-15" },
    { "nome": "Feriado", "data": "15/03/2024" },
    { "nome": "Aniversário", "data": "03/15/2024" }
  ]
}
{
  "eventos": [
    { "nome": "Reunião", "data": "2024-03-15T00:00:00" },
    { "nome": "Feriado", "data": "2024-03-15T00:00:00" },
    { "nome": "Aniversário", "data": "2024-03-15T00:00:00" }
  ]
}

Conclusão

Com este método, você converte automaticamente datas em formato texto para objetos datetime, garantindo consistência e possibilitando operações temporais avançadas. O processamento é feito em segundos, eliminando erros manuais e preparando seus dados para análises precisas.