Skip to content

Latest commit

 

History

History
246 lines (180 loc) · 7.93 KB

453-323832-[趣味拓展]中文计时法_阴阳合历_天干地支纪年法.sy.md

File metadata and controls

246 lines (180 loc) · 7.93 KB
show version enable_checker
step
1.0
true

时间日期

回忆

  • 上话了解了时区

    • 时区来自不同的经度
      • 经度的核心位置在
        • 英国的格林威治
  • 这是由 地球当时的科技和军事决定的

    • 英国海军 和 英国殖民地 遍布全球
  • 所以我们使用

    • 公元纪年
    • 时区分布
  • 我们的纪年和时间也会发生变化吗?🤔

  • 中国也有自己的阴阳合历

    • 可以使用农历的日期吗?

老黄历

  • 黄历 甲午年的

图片描述

  • 后来就改公元19XX年了

原始计时

  • 把一天分成十二个时辰

图片描述

  • 讲究个子午流注

图片描述

时间

图片描述

  • 英国伦敦的大本钟开始

图片描述

  • 中国各地再盖钟楼就不是钟鼓楼了
    • 而是四面钟楼
    • 周围的人不用买表
    • 时间观念也更精确了
  • 可以把公历转化为阴历吗?

搜索

图片描述

  • 安装包

图片描述

查看帮助

图片描述

  • 具体帮助

图片描述

  • 这个包是swig.org里面的的
  • swig是什么东西?

swig

图片描述

  • swig是用c/c++写的程序
  • 可以被python调用
  • 去试试

公历转农历

import sxtwl
day = sxtwl.fromSolar(2021, 11, 7)

# 以春节为界的农历(注getLunarYear如果没有传参,或者传true,是以春节为界的)
s = "农历:%d年%s%d月%d日" % (day.getLunarYear(), '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)

# 以立春为界的农历
s = "农历:%d年%s%d月%d日" % (day.getLunarYear(False), '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)

农历转公历

import sxtwl
# 如果查的是闰月,只要在第四个参数加一个true 如sxtwl.fromLunar(2020, 4, 1, true)
day = sxtwl.fromLunar(2020, 12, 1)
# 公历的年月日
s = "公历:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay())
print(s)

库的位置

图片描述

Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏",
     "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降", 
     "立冬", "小雪", "大雪"]
ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ]
rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", 
    "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", 
    "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]
XiZ = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手']
WeekCn = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  • 把数字 转化成干支
    • 就可以 使用传统农历纪年法 了

阳历日期时间

import sxtwl
XiZ = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手']
WeekCn = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
# 公历的年月日
day = sxtwl.fromSolar(2021, 11, 7)
s = "公历:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay())
print(s)

# 星期几
print(WeekCn[day.getWeek()])

# 这个月的第几周
print('该日属于这个月的第%d周'%(day.getWeekIndex(),))

# 星座(有bug?待修复)
print("星座:", XiZ[day.getConstellation()])
  • 结果

图片描述

阴历年月

import sxtwl
Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏",
     "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降",
     "立冬", "小雪", "大雪"]
ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ]
rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十",
    "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十",
    "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]
day = sxtwl.fromLunar(2020, 12, 1)
s = "农历:%d年%s%d月%d日" % (day.getLunarYear(),
    '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)

# 以立春为界的农历
s = "农历:%d年%s%d月%d日" % (day.getLunarYear(False),
    '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)


# 以春节为界的天干地支
yTG = day.getYearGZ(True)
print("以春节为界的年干支", Gan[yTG.tg] + Zhi[yTG.dz])
print("以春节为界的生肖:", ShX[yTG.dz])

# 以立春为界的天干地支 (注,如果没有传参,或者传false,是以立春为界的。刚好和getLunarYear相反)
yTG = day.getYearGZ()
print("以立春为界的年干支", Gan[yTG.tg] + Zhi[yTG.dz])
print("以立春为界的生肖:", ShX[yTG.dz])

#月干支
mTG = day.getMonthGZ()
print("月干支", Gan[mTG.tg] + Zhi[mTG.dz])

#日干支
dTG  = day.getDayGZ()
print("日干支", Gan[dTG.tg] + Zhi[dTG.dz])


#时干支,传24小时制的时间,分早晚子时
hour = 18
sTG = day.getHourGZ(hour)
print("%d时的干支"%(hour, ), Gan[sTG.tg] + Zhi[sTG.dz])


#时干支
for hour in range(24):
    # 第一个参数为该天的天干,第二个参数为小时
    hTG  = sxtwl.getShiGz(dTG.tg, hour)
    print("%d时天干地支:"%(hour), Gan[hTG.tg] + Zhi[hTG.dz])


# 当日是否有节气
if day.hasJieQi():
    print('节气:%s'% jqmc[day.getJieQi()])
    #获取节气的儒略日数
    jd = day.getJieQiJD()
    # 将儒略日数转换成年月日时秒
    t = sxtwl.JD2DD(jd )

    # 注意,t.s是小数,需要四舍五入
    print("节气时间:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s)))
else:
    print("当天不是节气日")
  • 运行结果

图片描述

总结

  • 这次了解了农历日期
    • 可以将日历修改成农历
    • 并且进行输出
    • 或者做其他的一些应用
  • 日期 不论阳历 还是阴历
    • 最终都是用 字符串的方式进行展示的
  • 字符串还有哪些函数吗??🤔
  • 下次再说👋🏻