#!/usr/bin/env python3 import sys import argparse from datetime import datetime def to_arvelie(year_full, doy): y = year_full % 100 letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" if doy == 365: return f"{y:02d}+00" elif doy == 366: return f"{y:02d}+01" else: m_index = (doy - 1) // 14 dom = (doy - 1) % 14 + 1 return f"{y:02d}{letters[m_index]}{dom:02d}" def main(): parser = argparse.ArgumentParser( description="Convert the current date, or a specified date, to Arvelie format.", epilog="Examples:\n" " %(prog)s # Print current Arvelie date\n" " %(prog)s 2021-01-08 # Convert January 8, 2021 to Arvelie", formatter_class=argparse.RawDescriptionHelpFormatter ) parser.add_argument("-v", "--version", action="version", version="Arvelie 1.0.0") parser.add_argument( "date", metavar="DATE", nargs="?", help="convert a specific date (formats: YYYY-MM-DD, YYYYMMDD)\n" "If omitted, prints the current local date." ) args = parser.parse_args() if args.date: try: if "-" in args.date: dt = datetime.strptime(args.date, "%Y-%m-%d") else: dt = datetime.strptime(args.date, "%Y%m%d") except ValueError: sys.stderr.write("Error: Invalid date format. Use YYYY-MM-DD.\n") sys.exit(1) else: dt = datetime.now() print(to_arvelie(dt.year, dt.timetuple().tm_yday)) if __name__ == "__main__": main()