Skip to main content

⏳ Uma biblioteca avançada para manipulação de datas e tempos em Python

Project description

📚 smart_time_py - Conversão Inteligente de Datas e Horas em Python

🔗 smart_time_py é um pacote Python que oferece funções práticas e flexíveis para conversão entre datetime e string, manipulações de tempo, validações aprimoradas, suporte a fuso horário, gerenciamento de feriados e muito mais.


Funcionalidades Principais

  • 🕒 Conversão de string para datetime com formatação customizada
  • 📝 Conversão de datetime para string em qualquer formato especificado
  • Validação de strings de data/hora com suporte a múltiplos formatos
  • 🌐 Conversão de datas com suporte a fuso horário e DST
  • 🔄 Transformações entre formatos de data com detecção automática
  • Manipulações de tempo: adição, subtração e cálculo de diferença entre datas
  • 📅 Gerenciamento de feriados com suporte a feriados nacionais e personalizados
  • 📊 Períodos e intervalos de tempo com operações avançadas
  • 📈 Formatação inteligente de datas e horas
  • 🚀 Funções leves e otimizadas para aplicações diversas
  • 📊 Análise temporal avançada com agrupamento, estatísticas e detecção de padrões

Instalação

Instale o pacote via PyPI:

pip install smart_time_py

Certifique-se de ter o Python 3.8+ instalado.


🚀 Como Usar

🕒 Conversão de String para Datetime

from smart_time_py.converter import string_to_datetime

date_str = "2025-02-24 14:30:00"
date_format = "%Y-%m-%d %H:%M:%S"
dt = string_to_datetime(date_str, date_format)
print("🕒 String para datetime:", dt)

📝 Conversão de Datetime para String

from smart_time_py.converter import datetime_to_string
from datetime import datetime

dt_obj = datetime(2025, 2, 24, 14, 30)
date_format = "%d/%m/%Y %H:%M"
dt_str = datetime_to_string(dt_obj, date_format)
print("📝 Datetime para string:", dt_str)

Validação de String de Data

from smart_time_py.converter import validate_date_string

is_valid = validate_date_string("24/02/2025", "%d/%m/%Y")
print("✅ String de data válida:", is_valid)

🌐 Conversão com Fuso Horário

from smart_time_py.converter import convert_with_timezone

resultado = convert_with_timezone("2025-02-25 15:00:00", "America/Sao_Paulo")
print("🌐 Data com fuso horário:", resultado)

Manipulação de Tempo

from smart_time_py.converter import add_time, subtract_time
from datetime import datetime

base_date = datetime(2025, 1, 1)
print("➕ Data após manipulação:", add_time(base_date, days=10, months=1))
print("➖ Data após subtração:", subtract_time(base_date, years=1))

📏 Diferença entre Datas

from smart_time_py.converter import calculate_difference

date1 = datetime(2025, 1, 1)
date2 = datetime(2025, 2, 1)
print("📏 Diferença em dias:", calculate_difference(date1, date2, "days"))

📅 Gerenciamento de Feriados

from smart_time_py.holidays import (
    is_holiday,
    add_holiday,
    remove_holiday,
    get_holidays,
    is_working_day
)
from datetime import date

# Verificar se uma data é feriado
data = date(2025, 1, 1)
print("🎉 É feriado?", is_holiday(data))

# Adicionar um feriado personalizado
add_holiday(date(2025, 4, 1), "Dia da Mentira")

# Verificar se é dia útil
print("💼 É dia útil?", is_working_day(data))

# Listar todos os feriados
print("📅 Feriados:", get_holidays(2025))

📊 Períodos e Intervalos de Tempo

from smart_time_py.periods import (
    TimePeriod,
    DateRange,
    create_period,
    create_date_range
)
from datetime import datetime, timedelta

# Criar um período de tempo
periodo = TimePeriod(
    start=datetime(2025, 1, 1),
    end=datetime(2025, 12, 31),
    name="Ano 2025"
)

# Verificar sobreposição de períodos
outro_periodo = TimePeriod(
    start=datetime(2025, 6, 1),
    end=datetime(2025, 6, 30),
    name="Junho 2025"
)
print("📊 Períodos se sobrepõem?", periodo.overlaps(outro_periodo))

# Criar um intervalo de datas
intervalo = DateRange(
    start=date(2025, 1, 1),
    end=date(2025, 1, 31),
    step=timedelta(days=1)
)
print("📈 Datas no intervalo:", list(intervalo))

📈 Formatação Inteligente

from smart_time_py.formatters import (
    format_relative,
    format_natural,
    format_iso
)
from datetime import datetime, timedelta

agora = datetime.now()
ontem = agora - timedelta(days=1)

# Formatação relativa
print("⏰ Formatação relativa:", format_relative(ontem))

# Formatação natural
print("📅 Formatação natural:", format_natural(agora))

# Formatação ISO
print("🌐 Formatação ISO:", format_iso(agora))

🌐 Operações com Fuso Horário

from smart_time_py.timezone import (
    convert_timezone,
    get_timezone_info,
    is_dst,
    get_available_timezones
)
from datetime import datetime

# Converter entre fusos horários
data = datetime(2025, 1, 1, 12, 0)
nova_data = convert_timezone(data, "America/Sao_Paulo", "Europe/London")
print("🌍 Data convertida:", nova_data)

# Verificar informações do fuso horário
info = get_timezone_info("America/Sao_Paulo")
print("ℹ️ Informações do fuso:", info)

# Verificar se está em horário de verão
print("☀️ Está em horário de verão?", is_dst(data, "America/Sao_Paulo"))

# Listar fusos horários disponíveis
print("🌎 Fusos disponíveis:", get_available_timezones())

📊 Análise Temporal Avançada

from smart_time_py.analysis import (
    TimeGroup,
    group_dates,
    calculate_temporal_stats,
    detect_temporal_patterns,
    analyze_seasonality
)
from datetime import datetime

# Criar uma lista de datas para análise
dates = [
    datetime(2025, 1, 1, 10, 0),
    datetime(2025, 1, 2, 10, 0),
    datetime(2025, 1, 3, 10, 0),
    datetime(2025, 1, 8, 10, 0),
    datetime(2025, 1, 9, 10, 0),
    datetime(2025, 1, 10, 10, 0),
]

# Agrupar datas por período
groups = group_dates(dates, TimeGroup.WEEKLY)
print("📅 Grupos semanais:", groups)

# Calcular estatísticas temporais
stats = calculate_temporal_stats(dates, TimeGroup.DAILY)
print("📊 Estatísticas diárias:", stats)

# Detectar padrões temporais
patterns = detect_temporal_patterns(dates)
print("🔄 Padrões encontrados:", patterns)

# Analisar sazonalidade
seasonality = analyze_seasonality(dates)
print("📈 Análise de sazonalidade:", seasonality)

📅 Integração com Calendários Externos

from smart_time_py.calendar_integration import GoogleCalendarIntegration
from datetime import datetime, timedelta

# Inicializar integração com Google Calendar
calendar = GoogleCalendarIntegration()

# Autenticar com o Google Calendar
calendar.authenticate('credentials.json')

# Obter eventos do período
start_date = datetime.now()
end_date = start_date + timedelta(days=7)
events = calendar.get_events(start_date, end_date)

# Criar um novo evento
event_data = {
    'summary': 'Reunião de Projeto',
    'location': 'Sala de Conferência',
    'description': 'Discussão sobre o progresso do projeto',
    'start': datetime.now() + timedelta(days=1),
    'end': datetime.now() + timedelta(days=1, hours=1),
    'timezone': 'America/Sao_Paulo'
}
new_event = calendar.create_event(event_data)

# Atualizar um evento existente
updated_event = calendar.update_event('event_id', event_data)

# Remover um evento
calendar.delete_event('event_id')

# Exportar eventos para formato iCal
calendar.export_to_ical(events, 'eventos.ics')

Nota: Para usar a integração com Google Calendar, você precisa:

  1. Criar um projeto no Google Cloud Console
  2. Habilitar a API do Google Calendar
  3. Criar credenciais OAuth2
  4. Baixar o arquivo de credenciais e salvá-lo como credentials.json

🧪 Testes

Execute os testes com pytest:

pytest -v

Para ver a cobertura de testes:

pytest -v --cov=smart_time_py

📦 Dependências

  • Python 3.8+
  • pytz>=2023.3
  • python-dateutil>=2.8.2
  • babel>=2.12.1

📄 Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.


🤝 Contribuições

Contribuições são bem-vindas! Por favor, leia as diretrizes de contribuição antes de enviar um pull request.


📞 Suporte

Para suporte, por favor abra uma issue no GitHub.


🏗 Estrutura do Projeto

smart_time_py/
│
├── smart_time_py/              # 📦 Código do pacote
│   ├── __init__.py
│   └── converter.py            # 🔄 Funções principais de conversão e manipulação
│
├── tests/                      # 🧪 Testes unitários
│   └── test_converter.py
│
├── setup.py                    # ⚙️ Configuração para publicação
├── pyproject.toml              # 📦 Configuração moderna
├── README.md                   # 📚 Documentação do projeto
├── LICENSE                     # 📜 Licença MIT
└── MANIFEST.in                 # 📋 Inclusão de arquivos extras

📝 Licença

Distribuído sob a Licença MIT. Consulte o arquivo LICENSE para mais detalhes.


👨‍💻 Autor

Desenvolvido por Roberto Lima 🚀✨


💬 Contato


Gostou do projeto?

Deixe uma ⭐ no repositório e compartilhe com a comunidade! 🚀✨


🌟 O que este README oferece?

  • 🎯 Descrição clara do projeto e seu propósito.
  • 🛠 Instruções detalhadas de instalação e uso prático.
  • 🧪 Guia de testes para garantir que o código funciona.
  • 🏗 Estrutura do projeto para facilitar a navegação.
  • 🔄 Seção de contribuição para quem deseja ajudar no desenvolvimento.
  • 📝 Licença e informações do autor para transparência.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smart_time_py-1.3.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smart_time_py-1.3.0-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file smart_time_py-1.3.0.tar.gz.

File metadata

  • Download URL: smart_time_py-1.3.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for smart_time_py-1.3.0.tar.gz
Algorithm Hash digest
SHA256 661f45b202bc3e747e4972fb1d928631ccaef55a3308760a55b8c39f09850a81
MD5 1403fb387544f7c1312cdb83860a936d
BLAKE2b-256 9c50d24d524e11ad8a355feb0615365e66a06e10198a33c196919744a542ba03

See more details on using hashes here.

File details

Details for the file smart_time_py-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: smart_time_py-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for smart_time_py-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe7b2f35b0a88a630bbb48d6bdb04c0c0d5a004d6add489a5e51431c825d014b
MD5 544b927f0333663fbaae7b793e3ff764
BLAKE2b-256 1fb42e306766220abc748e6a43d184006f54e0b9b580461cc2b3ada6cb19a626

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page