2018-02-03 | Paul Boddie | file changeset files shortlog | Made FormDate instances return corrected end date information instead of explicitly correcting end dates elsewhere. Added a reset method to FormPeriod and time usage methods to FormDate so that time usage can be updated for periods whose dates lack time information. Added an output string representation for form dates. | client-editing-simplification |
paul@716 | 1 | #!/usr/bin/env python |
paul@716 | 2 | |
paul@716 | 3 | """ |
paul@716 | 4 | Increment the hour in a datetime string, wrapping round within any given range. |
paul@716 | 5 | """ |
paul@716 | 6 | |
paul@716 | 7 | import sys |
paul@716 | 8 | |
paul@716 | 9 | try: |
paul@716 | 10 | dt_str = sys.argv[1] |
paul@716 | 11 | first, last = (sys.argv[2:4] + [None, None])[:2] |
paul@716 | 12 | except (IndexError, ValueError): |
paul@716 | 13 | sys.exit(1) |
paul@716 | 14 | |
paul@716 | 15 | if not dt_str: |
paul@716 | 16 | sys.exit(1) |
paul@716 | 17 | |
paul@716 | 18 | try: |
paul@716 | 19 | date_str = dt_str[:9] |
paul@716 | 20 | hour = int(dt_str[9:11]) |
paul@716 | 21 | min_sec_str = dt_str[11:] |
paul@716 | 22 | except ValueError: |
paul@716 | 23 | sys.exit(1) |
paul@716 | 24 | |
paul@716 | 25 | if not first: |
paul@716 | 26 | first = 0 |
paul@716 | 27 | else: |
paul@716 | 28 | first = int(first) |
paul@716 | 29 | |
paul@716 | 30 | if not last: |
paul@716 | 31 | last = 23 |
paul@716 | 32 | else: |
paul@716 | 33 | last = int(last) |
paul@716 | 34 | |
paul@716 | 35 | hour += 1 |
paul@716 | 36 | if hour > last: |
paul@716 | 37 | hour = first |
paul@716 | 38 | |
paul@716 | 39 | print '%s%02d%s' % (date_str, hour, min_sec_str) |
paul@716 | 40 | |
paul@716 | 41 | # vim: tabstop=4 expandtab shiftwidth=4 |