#!/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()