Skip to content

Instantly share code, notes, and snippets.

@Tokubara
Created December 9, 2022 07:45
Show Gist options
  • Save Tokubara/1cf588795ca4406990cb2d195c10513d to your computer and use it in GitHub Desktop.
Save Tokubara/1cf588795ca4406990cb2d195c10513d to your computer and use it in GitHub Desktop.
农历(阴历)/公历(阳历) 转换
#!/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)
@Tokubara
Copy link
Author

Tokubara commented Dec 9, 2022

用法:
日期格式是 yyyy-mm-dd.
-s 表示输入日期是公历日期, 输出会是农历日期. 如果没有 -s, 输入就是农历日期, 输出就是公历.
lunar -s 2022-01-10
lunar 2022-01-10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment