+def to_date(in_str: str) -> Optional[datetime.date]:
+ import dateparse.dateparse_utils as dp
+ try:
+ d = dp.DateParser()
+ d.parse(in_str)
+ return d.get_date()
+ except dp.ParseException:
+ logger.warning(f'Unable to parse date {in_str}.')
+ return None
+
+
+def valid_date(in_str: str) -> bool:
+ import dateparse.dateparse_utils as dp
+ try:
+ d = dp.DateParser()
+ _ = d.parse(in_str)
+ return True
+ except dp.ParseException:
+ logger.warning(f'Unable to parse date {in_str}.')
+ return False
+
+
+def to_datetime(in_str: str) -> Optional[datetime.datetime]:
+ import dateparse.dateparse_utils as dp
+ try:
+ d = dp.DateParser()
+ dt = d.parse(in_str)
+ if type(dt) == datetime.datetime:
+ return dt
+ except ValueError:
+ logger.warning(f'Unable to parse datetime {in_str}.')
+ return None
+
+
+def valid_datetime(in_str: str) -> bool:
+ _ = to_datetime(in_str)
+ if _ is not None:
+ return True
+ logger.warning(f'Unable to parse datetime {in_str}.')
+ return False
+
+