57 lines
9.7 KiB
Plaintext
57 lines
9.7 KiB
Plaintext
def evaluasi_tanggal(tanggal_list):
|
|
hasil = []
|
|
nama_bulan = ['jan', 'feb', 'mar', 'apr', 'may', 'jun',
|
|
'jul', 'aug', 'sep', 'oct', 'nov', 'dec']
|
|
|
|
for tanggal in tanggal_list:
|
|
tgl_lower = tanggal.lower()
|
|
# Jika mengandung nama bulan (tidak ambigu)
|
|
if any(bln in tgl_lower for bln in nama_bulan):
|
|
hasil.append((tanggal, "YA"))
|
|
continue
|
|
|
|
# Ganti pemisah agar seragam
|
|
parts = tanggal.replace("/", "-").split("-")
|
|
try:
|
|
parts_int = [int(p) for p in parts]
|
|
except ValueError:
|
|
hasil.append((tanggal, "TIDAK"))
|
|
continue
|
|
|
|
if len(parts_int) != 3:
|
|
hasil.append((tanggal, "TIDAK"))
|
|
continue
|
|
|
|
# Identifikasi tahun (4 digit)
|
|
tahun = next((x for x in parts_int if x > 999), None)
|
|
if not tahun:
|
|
hasil.append((tanggal, "TIDAK"))
|
|
continue
|
|
|
|
lainnya = [x for x in parts_int if x != tahun]
|
|
if all(x <= 12 for x in lainnya):
|
|
hasil.append((tanggal, "TIDAK"))
|
|
else:
|
|
hasil.append((tanggal, "YA"))
|
|
|
|
return hasil
|
|
|
|
|
|
# Contoh data
|
|
tanggal_data = [
|
|
"15/02/1998",
|
|
"04/05/2010",
|
|
"1-3-2004",
|
|
"2011-08-22",
|
|
"23-mar-2000",
|
|
"04/07/2010",
|
|
"1965-3-4"
|
|
]
|
|
|
|
# Jalankan evaluasi
|
|
hasil_cek = evaluasi_tanggal(tanggal_data)
|
|
|
|
# Cetak hasil
|
|
for tgl, status in hasil_cek:
|
|
print(f"{tgl}: {status}")
|
|
] |