Improved date parsing
This commit is contained in:
parent
2b3f23740b
commit
57028906b4
10
util.py
10
util.py
@ -166,13 +166,13 @@ class SyncProxy(object):
|
|||||||
return value
|
return value
|
||||||
|
|
||||||
re_dt_fileman = r'(?P<dt_fileman>(\d{3})(\d{2})(\d{2})(?:\.(\d{2})?(\d{2})?(\d{2})?)?)' # George Timson's format
|
re_dt_fileman = r'(?P<dt_fileman>(\d{3})(\d{2})(\d{2})(?:\.(\d{2})?(\d{2})?(\d{2})?)?)' # George Timson's format
|
||||||
re_dt_today = r'(?P<dt_today>T)' # today
|
re_dt_today = r'(?P<dt_today>TODAY|T)' # today
|
||||||
re_dt_now = r'(?P<dt_now>N)' # now
|
re_dt_now = r'(?P<dt_now>NOW|N)' # now
|
||||||
re_dt_mdy = r'(?P<dt_mdy>(\d{1,2})[^\w@?]+(\d{1,2})[^\w@?]+(\d{4}|\d{2})\s*)' # m/d/yy, m/d/yyyy
|
re_dt_mdy = r'(?P<dt_mdy>(\d{1,2})[^\w@?]+(\d{1,2})[^\w@?]+(\d{4}|\d{2})\s*)' # m/d/yy, m/d/yyyy
|
||||||
re_dt_ymd = r'(?P<dt_ymd>(\d{4})[^\w@?]+(\d{1,2})[^\w@?]+(\d{1,2})\s*)' # yyyy/m/d
|
re_dt_ymd = r'(?P<dt_ymd>(\d{4})[^\w@?]+(\d{1,2})[^\w@?]+(\d{1,2})\s*)' # yyyy/m/d
|
||||||
re_dt_yyyymmdd = r'(?P<dt_yyyymmdd>(\d{4})(\d{2})(\d{2}))' # yyyymmdd
|
re_dt_yyyymmdd = r'(?P<dt_yyyymmdd>(\d{4})(\d{2})(\d{2}))' # yyyymmdd
|
||||||
re_dt_Mdy = r'(?P<dt_Mdy>([A-Z]{3,})[^\w@?]+(\d{1,2})[^\w@?]+(\d{4}|\d{2})\s*)' # M/d/yy, M/d/yyyy
|
re_dt_Mdy = r'(?P<dt_Mdy>([A-Z]{3,})[^\w@?]+(\d{1,2})[^\w@?]+(\d{4}|\d{2})\s*)' # M/d/yy, M/d/yyyy
|
||||||
re_dt_dMy = r'(?P<dt_dMy>((\d{1,2})[^\w@?]+[A-Z]{3,})[^\w@?]+(\d{4}|\d{2})\s*)' # d/M/yy, d/M/yyyy
|
re_dt_dMy = r'(?P<dt_dMy>(\d{1,2})[^\w@?]+([A-Z]{3,})[^\w@?]+(\d{4}|\d{2})\s*)' # d/M/yy, d/M/yyyy
|
||||||
re_dt_md = r'(?P<dt_md>(\d{1,2})[^\w@?]+(\d{1,2})\s*)' # m/d
|
re_dt_md = r'(?P<dt_md>(\d{1,2})[^\w@?]+(\d{1,2})\s*)' # m/d
|
||||||
re_dt_offset = r'(?P<offset>([-+]\d+)(H|W|M)?)' # +#U
|
re_dt_offset = r'(?P<offset>([-+]\d+)(H|W|M)?)' # +#U
|
||||||
re_dt_time = r'(?:@?(?P<time>(\d{1,2}):?(\d{1,2})))' # time
|
re_dt_time = r'(?:@?(?P<time>(\d{1,2}):?(\d{1,2})))' # time
|
||||||
@ -197,13 +197,13 @@ def vista_strptime(s: str) -> datetime.datetime:
|
|||||||
time = datetime.time()
|
time = datetime.time()
|
||||||
if m['time']:
|
if m['time']:
|
||||||
if m['dt_now']:
|
if m['dt_now']:
|
||||||
raise ValueError('cannot specify time with N or H offset')
|
raise ValueError('cannot specify NOW with time')
|
||||||
m1 = re.match(re_dt_time, m['time'], flags=re.I)
|
m1 = re.match(re_dt_time, m['time'], flags=re.I)
|
||||||
date = date.replace(hour=int(m1.group(2)), minute=int(m1.group(3)))
|
date = date.replace(hour=int(m1.group(2)), minute=int(m1.group(3)))
|
||||||
if m['offset']:
|
if m['offset']:
|
||||||
m1 = re.match(re_dt_offset, m['offset'], flags=re.I)
|
m1 = re.match(re_dt_offset, m['offset'], flags=re.I)
|
||||||
if (offset_unit := m1.group(3)) == 'h' and (m['time'] or m['dt_today']):
|
if (offset_unit := m1.group(3)) == 'h' and (m['time'] or m['dt_today']):
|
||||||
raise ValueError('cannot specify time or T with H offset')
|
raise ValueError('cannot specify time or TODAY with H offset')
|
||||||
date = vista_strptime_offset(date, int(m1.group(2)), offset_unit or 'd')
|
date = vista_strptime_offset(date, int(m1.group(2)), offset_unit or 'd')
|
||||||
if m['ext']:
|
if m['ext']:
|
||||||
if m['ext'] == '<':
|
if m['ext'] == '<':
|
||||||
|
Loading…
Reference in New Issue
Block a user