Dashboard_Retrieval / component2date.py
Tran Xuan Huy
Update component2date.py
036e133
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