|
import re
|
|
from singleton_decorator import singleton
|
|
import re
|
|
from .Cardinal import CardinalVietnamese
|
|
import re
|
|
|
|
@singleton
|
|
class DateVietnamese:
|
|
"""
|
|
Chuyển đổi ngày tháng từ dạng số sang dạng chữ tiếng Việt.
|
|
Hỗ trợ các định dạng: "DD/MM/YYYY", "DD-MM-YYYY", "DD.MM.YYYY".
|
|
Ví dụ: "25/12/2023", "01-01-2024", "10.05.2023"
|
|
"""
|
|
|
|
def __init__(self):
|
|
self.day_trans_dict = {
|
|
"1": "một",
|
|
"2": "hai",
|
|
"3": "ba",
|
|
"4": "bốn",
|
|
"5": "năm",
|
|
"6": "sáu",
|
|
"7": "bảy",
|
|
"8": "tám",
|
|
"9": "chín",
|
|
"10": "mười",
|
|
"11": "mười một",
|
|
"12": "mười hai",
|
|
"13": "mười ba",
|
|
"14": "mười bốn",
|
|
"15": "mười lăm",
|
|
"16": "mười sáu",
|
|
"17": "mười bảy",
|
|
"18": "mười tám",
|
|
"19": "mười chín",
|
|
"20": "hai mươi",
|
|
"21": "hai mươi mốt",
|
|
"22": "hai mươi hai",
|
|
"23": "hai mươi ba",
|
|
"24": "hai mươi bốn",
|
|
"25": "hai mươi lăm",
|
|
"26": "hai mươi sáu",
|
|
"27": "hai mươi bảy",
|
|
"28": "hai mươi tám",
|
|
"29": "hai mươi chín",
|
|
"30": "ba mươi",
|
|
"31": "ba mươi mốt"
|
|
}
|
|
|
|
self.month_trans_dict = {
|
|
"1": "một",
|
|
"2": "hai",
|
|
"3": "ba",
|
|
"4": "tư",
|
|
"5": "năm",
|
|
"6": "sáu",
|
|
"7": "bảy",
|
|
"8": "tám",
|
|
"9": "chín",
|
|
"10": "mười",
|
|
"11": "mười một",
|
|
"12": "mười hai"
|
|
}
|
|
|
|
def convert_year(self, year: str) -> str:
|
|
cardinal_converter = CardinalVietnamese()
|
|
return cardinal_converter.convert(year)
|
|
|
|
def convert_date(self, date: str) -> str:
|
|
|
|
date_parts = re.split(r"[\/\-\.\s]", date)
|
|
if len(date_parts) ==3 :
|
|
day, month, year = date_parts[0], date_parts[1], date_parts[2]
|
|
|
|
day_text = f"ngày {self.day_trans_dict[day.lstrip('0')]}"
|
|
month_text = f"tháng {self.month_trans_dict[month.lstrip('0')]}"
|
|
year_text = f"năm {self.convert_year(year)}"
|
|
|
|
return f"{day_text} {month_text} {year_text}"
|
|
else:
|
|
month, year = date_parts[0], date_parts[1],
|
|
month_text = f"tháng {self.month_trans_dict[month.lstrip('0')]}"
|
|
year_text = f"năm {self.convert_year(year)}"
|
|
return f"{month_text} {year_text}"
|
|
if __name__ == "__main__":
|
|
date_converter = DateVietnamese()
|
|
|
|
|
|
example1 = "25/12/1990"
|
|
result1 = date_converter.convert_date(example1)
|
|
print(f"Ngày tháng: {example1}")
|
|
print(f"Chuyển đổi: {result1}")
|
|
print()
|
|
|
|
|
|
example2 = "01-01-1991"
|
|
result2 = date_converter.convert_date(example2)
|
|
print(f"Ngày tháng: {example2}")
|
|
print(f"Chuyển đổi: {result2}")
|
|
print()
|
|
|
|
|
|
example3 = "10.05.2023"
|
|
result3 = date_converter.convert_date(example3)
|
|
print(f"Ngày tháng: {example3}")
|
|
print(f"Chuyển đổi: {result3}")
|
|
|
|
|