Created
December 9, 2022 07:45
-
-
Save Tokubara/1cf588795ca4406990cb2d195c10513d to your computer and use it in GitHub Desktop.
农历(阴历)/公历(阳历) 转换
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3.9 | |
import sxtwl | |
import argparse | |
import datetime as dt | |
DATE_FORMAT = "%Y-%m-%d" | |
parser = argparse.ArgumentParser(description='convert between lunar and solar calendar') | |
parser.add_argument('date', metavar='date', type=str, nargs='?', default=dt.datetime.today().strftime(DATE_FORMAT), | |
help='date to convert') | |
parser.add_argument('-s', dest='is_solar', action='store_const', | |
const=True, default=False, | |
help='input date is solar') | |
args = parser.parse_args() | |
date=dt.datetime.strptime(args.date,DATE_FORMAT) | |
if args.is_solar: | |
day = sxtwl.fromSolar(date.year, date.month, date.day) | |
s = "农历:%d年%s%d月%d日" % (day.getLunarYear(), '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay()) | |
if day.hasJieQi(): | |
s += f"({day.getJieQi()})" | |
else: | |
day = sxtwl.fromLunar(date.year, date.month, date.day) | |
s = "solar: %d-%02d-%d" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay()) | |
print(s) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
用法:
日期格式是 yyyy-mm-dd.
-s 表示输入日期是公历日期, 输出会是农历日期. 如果没有 -s, 输入就是农历日期, 输出就是公历.
lunar -s 2022-01-10
lunar 2022-01-10