namkuner's picture
Upload folder using huggingface_hub
ddd337d verified
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:
# Tìm và tách ngày, tháng, năm dựa trên dấu phân cách
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()
# Ví dụ 1
example1 = "25/12/1990"
result1 = date_converter.convert_date(example1)
print(f"Ngày tháng: {example1}")
print(f"Chuyển đổi: {result1}")
print()
# Ví dụ 2
example2 = "01-01-1991"
result2 = date_converter.convert_date(example2)
print(f"Ngày tháng: {example2}")
print(f"Chuyển đổi: {result2}")
print()
# Ví dụ 3
example3 = "10.05.2023"
result3 = date_converter.convert_date(example3)
print(f"Ngày tháng: {example3}")
print(f"Chuyển đổi: {result3}")