Skip to main content

📚 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
│
├── pyproject.toml              # ⚙️ Configuração do pacote (build via hatchling)
├── 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.

Metadata

Release files for smart-time-py 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smart-time-py 1.3.1
File Size Uploaded Provenance
smart_time_py-1.3.1.tar.gz 24.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for smart-time-py 1.3.1
File Interpreter ABI Platform
smart_time_py-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 46.2 kB

Release files / smart_time_py-1.3.1.tar.gz

Download URL smart_time_py-1.3.1.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5bed87b43a84da17c9c7e607b3efba38468f815279da380ea5d4b4c69d3e4dfd
BLAKE2b-256 checksum
How to use checksums
961ddaf3deb8e7cb38149287bba5ffde2fc7f04e7b288cc3572ee7e287808048
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / smart_time_py-1.3.1-py3-none-any.whl

Download URL smart_time_py-1.3.1-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
960b2e7ca76148dd6600f3d8dfa103ab6d29228622648caed08360aebdad430f
BLAKE2b-256 checksum
How to use checksums
2be236d2620b52c43ce560581251c0a30d210d877be1b4a649d4b4e144fa6265
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Security for smart-time-py 1.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page