GenDates.py
Revision as of 17:07, 19 July 2009 by PeterHarding (talk | contribs)
Script
#!/usr/bin/env python
#
# Purpose: Generate date range
#
# $Id:$
#
#-------------------------------------------------------------------------------
"""
Usage: gen_date_range.py [-v] [-d] [-D2] [-S <start_date> [-E <end_date>]]
...
"""
#-------------------------------------------------------------------------------
import os
import sys
import getopt
import logging
#-------------------------------------------------------------------------------
from datetime import datetime, timedelta
#-------------------------------------------------------------------------------
__version__ = "1.0.0"
__id__ = "@(#) gen_date_range.py [%s] 2008-07-15"
verbose_flg = False
debug_level = 0
DoW = {
0 : 'Mon',
1 : 'Tue',
2 : 'Wed',
3 : 'Thu',
4 : 'Fri',
5 : 'Sat',
6 : 'Sun'
}
START = datetime(day=1, month=1, year=2007)
#===============================================================================
def is_weekday(d):
dow = d.weekday()
if dow < 5:
return True
else:
return False
#-------------------------------------------------------------------------------
def date_range(start=None, end=None, no_days=None):
if start:
d_start = start
else:
d_start = START
if end:
d_end = end
elif no_days:
d_end = d_start + timedelta(days=no_days)
else:
d_end = datetime.now()
d = d_start
while d < d_end:
dow = d.weekday()
if dow < 5:
print '%s,%s' % (d.strftime("%d/%m/%Y"), DoW[dow])
d += timedelta(days=1)
#-------------------------------------------------------------------------------
def generate_for_date_range():
dates = []
for n in range(no_days):
d = date - datetime.timedelta(days=n)
print d.strftime("%y%m%d")
dates.append(d)
# print date.strftime("%y%m%d")
for d in dates:
generate(d)
#===============================================================================
def main(argv):
global verbose_flg
global debug_level
start_date = None
end_date = None
no_days = None
try:
opts, args = getopt.getopt(argv, "dD:E:hn:S:t:vV?",
["debug", "debug_level=", "end_date=", "help",
"no_days=", "start_date=", "verbose", "version"])
except getopt.GetoptError:
usage()
return 2
for opt, arg in opts:
if opt in ("-d", "--debug"):
debug_level += 1
debug_flg = True
elif opt in ('-D', "--debug_level"):
debug_level = int(arg)
elif opt in ('-n', "--no_days"):
no_days = int(arg)
elif opt in ("-t", "--target_date"):
target_date = datetime.strptime(arg, "%Y%m%d")
elif opt in ("-E", "--end_date"):
end_date = datetime.strptime(arg, "%Y%m%d")
elif opt in ("-S", "--start_date"):
start_date = datetime.strptime(arg, "%Y%m%d")
elif opt in ("-h", "-?", "--help"):
# print __doc__
usage()
return 1
elif opt in ("-v", "--verbose"):
verbose_flg = True
if (debug_level > 0): print "Debugging level set to %d" % debug_level
date_range(start=start_date, end=end_date, no_days=no_days)
return 0
#-------------------------------------------------------------------------------
if __name__ == '__main__' or __name__ == sys.argv[0]:
try:
sys.exit(main(sys.argv[1:]))
except KeyboardInterrupt, e:
print "[gen_dates] Interrupted!"
#-------------------------------------------------------------------------------
"""
Revision History:
Date Who Description
-------- --- ------------------------------------------------------------
20060811 plh Initial implementation
Problems to fix:
To Do:
Issues:
"""