Source code for UCTB.preprocess.time_utils
from dateutil.parser import parse
from chinese_calendar import is_workday
america_public_holiday = ['01-01', '01-02', '01-16', '02-12', '02-13', '02-20', '05-29', '07-04', '09-04',
'10-09', '11-10', '11-11', '11-23', '12-25']
[docs]def is_work_day_america(date):
if type(date) is str:
date = parse(date)
if date.strftime('%m-%d') in america_public_holiday:
return False
week = date.weekday()
if week < 5:
return True
else:
return False
[docs]def is_work_day_china(date):
if type(date) is str:
date = parse(date)
return is_workday(date)
[docs]def is_valid_date(date_str):
try:
date = parse(date_str)
except:
return False
year = date.year
month = date.month
day = date.day
isRunNian = False
if year % 4 == 0 and year % 100 != 0 and year % 400 == 0:
isRunNian = True
if month < 1 or month > 12:
return False
pingnian_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
runnian_month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if isRunNian:
if day < 1 or day > pingnian_month[month]:
return False
else:
if day < 1 or day > runnian_month[month]:
return False
return True