From: Dan White Date: Tue, 27 Jun 2023 20:39:46 +0000 (-0500) Subject: TimeSampleHistogram: opt to use ISO week numbers (with opt year) X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=ce4a7a0fe8aba521a3787f84d13ef616854f2e5e;p=pubbin.git TimeSampleHistogram: opt to use ISO week numbers (with opt year) --- diff --git a/TimeSampleHistogram b/TimeSampleHistogram index ab69d80..021271c 100755 --- a/TimeSampleHistogram +++ b/TimeSampleHistogram @@ -53,7 +53,7 @@ parser.add_option('-g', '--gtd', dest='gtd', action='store_true', parser.add_option('-b', '--bare', dest='bare', action='store_true', help='show histogram only', default=False) parser.add_option('-W', '--isoweek', dest='isoweek', - help='only show ISO [YYYY-]WK', default=None) + help='show ISO week range [YYYY-]WK[..[YYYY-]WK]', default=None) parser.add_option('-f', '--field-sep', dest='sep', type='str', help='field separator', metavar='f', default='') parser.add_option('-i', '--ignore-case', dest='ignore_case', action='store_true', @@ -124,15 +124,28 @@ elif opt.days < 0: startdate = enddate + dt.timedelta(opt.days) if opt.isoweek: - yw = opt.isoweek.split('-') - if len(yw) == 1: - year = dt.datetime.now().year - week = int(yw[0]) - if len(yw) > 1: - year = int(yw[0]) - week = int(yw[1]) + # any number of periods denote a range of weeks + wrange = opt.isoweek.replace('.', ' ').split() + # may be one or two items + # if only one list item, then the second needs to be a copy of the first + wrange.append(wrange[0]) + + def wstr_to_date(wstr): + *year, week = wstr.split('-') + + if year: + year = int(year[0]) + else: + year = dt.datetime.now().year + + week = int(week) + return (year, week) + + year, week = wstr_to_date(wrange[0]) startdate = iso_to_gregorian(year, week, 1) + + year, week = wstr_to_date(wrange[1]) enddate = iso_to_gregorian(year, week, 7)