Conversão de Data para Texto
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Dada uma data no formato dd/mm/aaaa, quero obter uma string correspondente a essa data convertida por extenso em português. A conversão deve seguir as regras gramaticais do idioma, como formatação de meses e o uso correto de preposições.
Por exemplo, converter 15/08/2024 para "Quinze de agosto de dois mil e vinte e quatro".
Descreva a solução que você gostaria
- Uma função
convert_date_to_text, que recebe uma data no formatodd/mm/aaaa(como string) e retorna uma string que representa essa data por extenso. - A função deve lidar com datas válidas e retornar
Nonepara datas inválidas. - Os meses devem ser representados por seus nomes completos, por exemplo, "janeiro", "fevereiro", "março", etc.
- Para os dias, deve-se usar a forma numérica por extenso, como "primeiro", "dois", "três", etc.
- O ano deve ser convertido também em palavras, por exemplo,
2024→"dois mil e vinte e quatro". - Caso a data seja inválida ou o formato não seja reconhecido, a função deve retornar
None.
Descreva alternativas que você considerou
-
Seguir até o passo 8 do guia de contribuição.
-
Como parte do passo 8, criar o arquivo:
brutils-python/brutils/date.py.def convert_date_to_text(date): # type: (str) -> str | None """ Converts a given date in Brazilian format (dd/mm/yyyy) to its textual representation. This function takes a date as a string in the format dd/mm/yyyy and converts it to a string with the date written out in Brazilian Portuguese, including the full month name and the year. Args: date (str): The date to be converted into text. Expected format: dd/mm/yyyy. Returns: str or None: A string with the date written out in Brazilian Portuguese, or None if the date is invalid. Example: >>> convert_date_to_text("15/08/2024") "Quinze de agosto de dois mil e vinte e quatro" >>> convert_date_to_text("01/01/2000") "Primeiro de janeiro de dois mil" >>> convert_date_to_text("31/12/1999") "Trinta e um de dezembro de mil novecentos e noventa e nove" >>> convert_date_to_text("30/02/2020") None """ # Lógica para conversão de dataImportar a nova função no arquivo
brutils-python/brutils/__init__.py.# Date Imports from brutils.date import ( convert_date_to_text, )E adicionar o nome da nova função na lista
__all__do mesmo arquivobrutils-python/brutils/__init__.py:__all__ = [ ... # Date 'convert_date_to_text' ] -
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/test_date.py.from unittest import TestCase from brutils.date import convert_date_to_text class TestDate(TestCase): def test_convert_date_to_text(self): self.assertEqual(convert_date_to_text("15/08/2024"), "Quinze de agosto de dois mil e vinte e quatro") self.assertEqual(convert_date_to_text("01/01/2000"), "Primeiro de janeiro de dois mil") self.assertEqual(convert_date_to_text("31/12/1999"), "Trinta e um de dezembro de mil novecentos e noventa e nove") self.assertIsNone(convert_date_to_text("30/02/2020")) self.assertIsNone(convert_date_to_text("invalid")) self.assertEqual(convert_date_to_text("29/02/2020"), "Vinte e nove de fevereiro de dois mil e vinte") self.assertEqual(convert_date_to_text("01/01/1900"), "Primeiro de janeiro de mil novecentos") # Implementar mais casos de teste aqui se necessário -
Seguir os passos seguintes do guia de contribuição.
Contexto adicional
- A conversão de datas deve seguir as regras gramaticais do português brasileiro.
Pode por gentiliza dar assign para mim nessa issue?
Feito @BeneBr