Mundo em Python

Conversor de Datas

from tkinter import *
from datetime import datetime
import locale try:
locale.setlocale(locale.LC_TIME, "pt_PT.utf8") # Para Linux/macOS
except:
locale.setlocale(locale.LC_TIME, "") # Para Windows

root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Conversor de Datas") titulo = Label(root, text="Conversor de Datas",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.25, rely=0.05) texto_sub1 = Label(root, text="Data (DD/MM/AA ou DD/MM/AAAA):",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.25)
Data = StringVar()
Data_entrada = Entry(root, textvariable=Data,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Data_entrada.place(relx=0.55, rely=0.26, relwidth=0.35)
dropDownList = ["Padrão EUA", "Padrão PT", "Brasil (BR)", "Reino Unido (UK)", "Alemanha (DE)", "Padrão Extenso"]
var = StringVar()
var.set(dropDownList[0]) # Define a opção padrão
dropdown = OptionMenu(root, var, *dropDownList)
dropdown.place(relx=0.3, rely=0.4, relwidth=0.35)
dropdown.config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 17, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF", font=("Arial", 17, "bold")) def corrigir_ano(data):
try:
dia, mes, ano = data.split("/")
if len(ano) == 2: # Se o ano for de dois dígitos, assume século 2000+
ano = "20" + ano if int(ano) < 50 else "19" + ano
data_corrigida = f"{dia}/{mes}/{ano}"
datetime.strptime(data_corrigida, "%d/%m/%Y")
return data_corrigida
except ValueError:
return None

def validar_data(data):
try:
data_corrigida = corrigir_ano(data)
if not data_corrigida:
return False
datetime.strptime(data_corrigida, "%d/%m/%Y")
return True
except ValueError:
return False

def app():
data = Data.get()
if not validar_data(data):
resultado_texto.config(text="Erro! Data inválida. Use um formato válido (DD/MM/AAAA).")
return
data_corrigida = corrigir_ano(data)
data_obj = datetime.strptime(data_corrigida, "%d/%m/%Y")
formato_selecionado = var.get() formatos = {
"Brasil (BR)": data_obj.strftime("%d/%m/%Y"), # 10/03/2025
"Padrão EUA": data_obj.strftime("%m-%d-%Y"), # 03-10-2025
"Padrão PT": data_obj.strftime("%Y-%m-%d"), # 2025-03-10
"Reino Unido (UK)": data_obj.strftime("%d/%m/%Y"), # 10/03/2025
"Alemanha (DE)": data_obj.strftime("%d.%m.%Y"), # 10.03.2025
"Padrão Extenso": data_obj.strftime("%d de %B de %Y") # 10 de março de 2025
} resultado_texto.config(text=f"Data Convertida: {formatos[formato_selecionado]}") def limpar():
Data_entrada.delete(0, END)
resultado_texto.config(text="") but1 = Button(root, text="Converter", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, relwidth=0.25, relheight=0.1) but_limpar = Button(root, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.65, relwidth=0.25, relheight=0.1) but_sair = Button(root, text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.65, relwidth=0.25, relheight=0.1) resultado_texto = Label(root, text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15) root.mainloop()
0