Spaces:
Runtime error
Runtime error
import datetime | |
import calendar | |
from dateutil.relativedelta import relativedelta | |
def time2date(input): | |
chu_ky_thoi_gian = input['CHU KỲ THỜI GIAN'] | |
thu = input['THỨ'] | |
ngay = input['NGÀY'] | |
tuan = input['TUẦN'] | |
thang = input['THÁNG'] | |
quy = input['QUÝ'] | |
nam = input['NĂM'] | |
current_date = datetime.date.today() | |
output = 'error' | |
if chu_ky_thoi_gian=='ngày': | |
# hôm kia | |
if ngay=='hôm kia': | |
output = current_date - datetime.timedelta(days=2) | |
# hôm qua | |
elif ngay=='hôm qua': | |
output = current_date - datetime.timedelta(days=1) | |
# hôm nay | |
elif ngay=='hôm nay': | |
output = current_date | |
# ngày mai | |
elif ngay=='mai': | |
output = current_date + datetime.timedelta(days=1) | |
# ngày kia | |
elif ngay=='kia': | |
output = current_date + datetime.timedelta(days=2) | |
# đầu | |
elif ngay=='đầu': | |
if thang=='trước': | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
1 | |
) | |
elif thang=='này': | |
needed_thang = current_date.month | |
needed_nam = current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
1 | |
) | |
elif thang=='sau': | |
needed_thang = 1 if current_date.month==12 else current_date.month+1 | |
needed_nam = current_date.year+1 if current_date.month==12 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
1 | |
) | |
else: | |
print('ngày đầu') | |
output = current_date | |
# cuối | |
elif ngay=='cuối': | |
if thang=='trước': | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang=='này': | |
needed_thang = current_date.month | |
needed_nam = current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang=='sau': | |
needed_thang = 1 if current_date.month==12 else current_date.month+1 | |
needed_nam = current_date.year+1 if current_date.month==12 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
else: | |
print('ngày cuối') | |
output = current_date | |
# xxx | |
elif ngay.isdigit(): | |
ngay = int(ngay) | |
if thang.isdigit(): | |
thang = int(thang) | |
if nam.isdigit(): | |
nam = int(nam) | |
try: | |
output = datetime.date(nam, thang, ngay) | |
except ValueError: | |
print("ngày xxx tháng yyy nam xxx") | |
output = current_date | |
else: | |
try: | |
output = datetime.date(current_date.year, thang, ngay) | |
except ValueError: | |
print("ngày xxx tháng yyy nam xxx") | |
output = current_date | |
else: | |
try: | |
output = datetime.date(current_date.year, current_date.month, ngay) | |
except ValueError: | |
print('ngày xxx') | |
output = current_date | |
elif ngay=='khác': | |
# thứ hai tuần sau | |
# thứ hai tuần này | |
# thứ hai tuần trước | |
# thứ hai tuần gần nhất | |
# thứ hai | |
if thu != "khác": | |
if tuan=='khác' or tuan=='gần nhất': | |
current_thu = current_date.weekday()+2 | |
input_thu = 8 if thu=='chủ nhật' else int(thu) | |
if input_thu < current_thu: | |
daydelta = current_thu - input_thu | |
output = current_date - datetime.timedelta(days=daydelta) | |
elif input_thu == current_thu: | |
output = current_date - datetime.timedelta(days=7) | |
else: | |
daydelta = input_thu - current_thu | |
output = current_date - datetime.timedelta(days=7-daydelta) | |
elif tuan=='này': | |
current_thu = current_date.weekday()+2 | |
input_thu = 8 if thu=='chủ nhật' else int(thu) | |
if input_thu < current_thu: | |
daydelta = current_thu - input_thu | |
output = current_date - datetime.timedelta(days=daydelta) | |
elif input_thu == current_thu: | |
output = current_date | |
else: | |
daydelta = input_thu - current_thu | |
output = current_date + datetime.timedelta(days=daydelta) | |
elif tuan=='trước': | |
current_thu = current_date.weekday()+2 | |
input_thu = 8 if thu=='chủ nhật' else int(thu) | |
if input_thu < current_thu: | |
daydelta = current_thu - input_thu + 7 | |
output = current_date - datetime.timedelta(days=daydelta) | |
elif input_thu == current_thu: | |
output = current_date - datetime.timedelta(days=7) | |
else: | |
daydelta = input_thu - current_thu | |
output = current_date - datetime.timedelta(days=7-daydelta) | |
elif tuan=='sau': | |
current_thu = current_date.weekday()+2 | |
input_thu = 8 if thu=='chủ nhật' else int(thu) | |
if input_thu < current_thu: | |
daydelta = 7 - (current_thu - input_thu) | |
output = current_date + datetime.timedelta(days=daydelta) | |
elif input_thu == current_thu: | |
output = current_date + datetime.timedelta(days=7) | |
else: | |
daydelta = input_thu - current_thu | |
output = current_date + datetime.timedelta(days=7+daydelta) | |
elif thu=='khác': | |
current_thu = current_date.weekday() | |
if tuan=='trước' or tuan=='gần nhất': # ngày cuối tuần | |
daydelta = current_thu+1 | |
output = current_date - datetime.timedelta(days=daydelta) | |
elif tuan=='này': | |
daydelta = 6 - current_thu | |
if daydelta > 0: | |
output = current_date + datetime.timedelta(days=daydelta) | |
else: | |
output = current_date | |
elif tuan=='sau': | |
daydelta = 13 - current_thu | |
output = current_date + datetime.timedelta(days=daydelta) | |
else: | |
print('ngày khác thứ khác tuần khác') | |
output = current_date | |
else: # return default for ngay | |
output = current_date | |
print('Error chu ky thoi gian: ngay') | |
elif chu_ky_thoi_gian=='tháng': # ngày cuối tháng | |
if thu != 'khác' or ngay != 'khác' or tuan != 'khác': | |
print('Invalid') | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang=='trước': | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang=='này': | |
needed_thang = current_date.month | |
needed_nam = current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang=='sau': | |
needed_thang = 1 if current_date.month==12 else current_date.month+1 | |
needed_nam = current_date.year+1 if current_date.month==12 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
elif thang.isdigit(): | |
thang = int(thang) | |
if nam.isdigit(): | |
nam = int(nam) | |
output = datetime.date( | |
int(nam), | |
int(thang), | |
calendar.monthrange(int(nam), int(thang))[1] | |
) | |
else: | |
if thang > current_date.month: | |
output = datetime.date( | |
current_date.year-1, | |
thang, | |
calendar.monthrange(current_date.year-1, thang)[1] | |
) | |
else: | |
output = datetime.date( | |
current_date.year, | |
thang, | |
calendar.monthrange(current_date.year, thang)[1] | |
) | |
elif thang=='khác': | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
else: # ngay cuoi thang truoc | |
needed_thang = 12 if current_date.month==1 else current_date.month-1 | |
needed_nam = current_date.year-1 if current_date.month==1 else current_date.year | |
output = datetime.date( | |
needed_nam, | |
needed_thang, | |
calendar.monthrange(needed_nam, needed_thang)[1] | |
) | |
print('Error chu ky thoi gian: thang') | |
elif chu_ky_thoi_gian=='quý': | |
if quy in ['1', '2', '3', '4', 'I', 'II', 'III', 'IV']: | |
output = "Valid" | |
output = current_date | |
# print('Chu ky thoi gian: quy ' + quy) | |
else: | |
output = "Invalid" | |
output = current_date | |
# print('Error chu ky thoi gian: quy') | |
elif chu_ky_thoi_gian=='năm': | |
if nam.isdigit(): | |
output = "Valid" | |
output = current_date | |
# print("Chu ky thoi gian: nam " + nam) | |
else: | |
output = "Invalid" | |
output = current_date | |
# print('Error chu ky thoi gian: năm') | |
elif chu_ky_thoi_gian=='khác': | |
output = "Valid" | |
output = current_date | |
else: | |
output = current_date | |
return output | |