Skip to content

Instantly share code, notes, and snippets.

@yanyaoer
Last active December 23, 2015 03:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yanyaoer/6576581 to your computer and use it in GitHub Desktop.
Save yanyaoer/6576581 to your computer and use it in GitHub Desktop.
import datetime
def parse_date(date_string, format='%Y-%m-%d', seg=','):
''' defualt date_string == 'yesterday'
available alias 'week','month','year' or timestr: '2013-0101'
relativedate = latest_parse_date or today
parse_date('2011-01-01')
=> datetime(2011,01,01)
parse_date('2011-01-02,')
parse_date('2011-01-02,yesterday')
=> [datetime(2011,01,01), parse_date('2010-12-01')]
'''
today = datetime.datetime.today()
def _parse(date_string, start=today):
try:
end = datetime.datetime.strptime(date_string, format)
except:
if date_string == 'month':
if start.month == 1:
end = start.replace(year=start.year-1, month=12)
else:
end = start.replace(month=start.month-1)
else:
yesterday = start - datetime.timedelta(days=1)
end = {
'yesterday': yesterday,
'week': start - datetime.timedelta(days=6),
'year': start.replace(year=start.year-1),
}.get(date_string, yesterday)
return end
if seg in date_string:
ds = date_string.split(seg)
ret = []
for s in ds:
last_d = ret[-1] if ret else today
d = _parse(s.strip(), last_d)
ret.append(d)
return ret
else:
return _parse(date_string)
@yanyaoer
Copy link
Author

支持参数(def_arg='yesterday')

2013-09-13

2013-09-13, 2013-09-23

yesterday

week

month

year

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment