当前位置: 首页 > article >正文

掐指一算——小六壬预测方法的简单实现

小六壬预测方法十分简单,预测时只须提取当时的月、日、时信息,用左拇指在六个掌诀位上按顺时针方向依次掐算即知结果。其法以大安起正月,月上起日,日上起时。郑博士提醒注意:这句话意思就是从月上开始计算日子,从日上开始计算时辰。如:占三月初五辰时吉凶。大安起数,三(月)是速喜,速喜起日(开始计算日子),五是大安。大安起时(开始计算时辰),辰时是小吉。

第一步,先确定月份在掌诀上的起点(定位),以起点推算月份落点。不管是第几个月,均以“大安”为正月起点,然后按顺时针在六个掌诀定位上按六神次序依次往下数。

第二步,以月份落(终)点为日辰起点,然后推算日辰落点。从月份落点上起初一,同样按顺时针在六个掌诀定位上按六神顺序依次柱下数,一直数到天数为止,此掌诀定位即为日辰之落点。

第三步,以日辰落点为时辰起点,推算时辰落点。

代码如下:

from lunarcalendar import Converter, Solar


def six_divination(lunar_month, lunar_day, s):
    # 六个掌诀的位置
    positions = ["大安", "留连", "速喜", "赤口", "小吉", "空亡"]

    # 计算月份、日期和时间对应的掌诀位置
    month_position = (lunar_month - 1) % 6
   
    day_position = (lunar_day + month_position - 1) % 6
   
    hour_position = (s + lunar_month - 1 + lunar_day - 1) % 6
   

    return positions[month_position], positions[day_position], positions[hour_position]


def convert_to_lunar(year, month, day):
   
    # 使用Converter将公历日期转换为农历日期
    lunar_date = Converter.Solar2Lunar(Solar(year, month, day))
    # 获取农历年、月、日
    lunar_year = lunar_date.year
    lunar_month = lunar_date.month
    lunar_day = lunar_date.day

    return lunar_year, lunar_month, lunar_day


def convert_hour_to_shichen(in_hour):
    # 将24小时制时间转换为12小时制,并确定对应的时辰
    hour, minute = map(int, in_hour.split(":"))
    if 0 <= hour < 1:
        sc_time = "子"
        hour = 0
    elif 1 <= hour < 3:
        sc_time = "丑"
        hour = 1
    elif 3 <= hour < 5:
        sc_time = "寅"
        hour = 2
    elif 5 <= hour < 7:
        sc_time = "卯"
        hour = 3
    elif 7 <= hour < 9:
        sc_time = "辰"
        hour = 4
    elif 9 <= hour < 11:
        sc_time = "巳"
        hour = 5
    elif 11 <= hour < 13:
        sc_time = "午"
        hour = 6
    elif 13 <= hour < 15:
        sc_time = "未"
        hour = 7
    elif 15 <= hour < 17:
        sc_time = "申"
        hour = 8
    elif 17 <= hour < 19:
        sc_time = "酉"
        hour = 9
    elif 19 <= hour < 21:
        sc_time = "戌"
        hour = 10
    elif 21 <= hour < 23:
        sc_time = "亥"
        hour = 11
    elif hour == 23 or hour == 0:
        sc_time = "子"
        hour = 0
    return sc_time, hour

# 输入公历年、月、日和时辰(24小时制)
year = int(input("请输入公历年份: "))
month = int(input("请输入公历月份: "))
day = int(input("请输入公历日期: "))
hour = input("请输入公历小时(0-23): ")



lunar_year, lunar_month, lunar_day = convert_to_lunar(year, month, day)

# 转换公历时间到农历时辰
shichen = convert_hour_to_shichen(hour)[0]
hour = convert_hour_to_shichen(hour)[1]


# 进行小六壬预测
month_result, day_result, hour_result = six_divination(lunar_month, lunar_day, hour)


print(
    f"公历{year}年{month}月{day}日{hour}时对应的农历日期为:农历{lunar_year}年{lunar_month}月{lunar_day}日")
print(f"根据小六壬预测,该日期的占卜结果为:月份位置-{month_result}, 日期位置-{day_result}, 农历时辰为:{shichen}时-{hour_result}")

例1

如你农历2010年六月初五上午九点半。要和男友(女友)初次相会,可以算一下吉凶如何。

前面说了凡事都从大安起卦,大安为一月,留连为二月,速喜为三月,赤口为四月,小吉为五月,空亡为六月;下面再算日子,月份算到空亡了,接着日子从空亡开始,空亡是初一,大安是初二,留连初三,速喜初四,赤口初五;同理接着时辰算,赤口是子时,小吉是丑时,空亡是寅时,大安是卯时,留连是辰时,速喜巳时(9:00-11:00)。所以最终得了个速喜卦。是好事,可能一见钟情。

例2

以农历2010年农历八月
十七日辰时为例。

(一)首先照顺时针方向由大安开始计为正月,则留连便是二月,如此类推,八月就是留连了。

(二)再由八月这个留连开始计为初一,速喜为初二,如此类推,十七日就是空亡了。

(三)由十七日这个空亡开始计为子时,大安就是丑时,如此类推,顺时针数下去,辰时就落在赤口上了

验证:

例1

如上所述:农历2010年六月初五上午九点半即2010年7月16日9:30

六月——空亡,初五——赤口,上午九点半——速喜巳时

例2

如上所述:

农历八月十七日辰时即2010年9月24日上午07:00-09:00

八月——留连,十七——空亡,上午07:00-09:00——赤口

请输入公历年份: 2010
请输入公历月份: 7
请输入公历日期: 16
请输入公历小时(0-23): 9:30
公历2010年7月16日5时对应的农历日期为:农历2010年6月5日
根据小六壬预测,该日期的占卜结果为:月份位置-空亡, 日期位置-赤口, 农历时辰为:巳时-速喜

请输入公历年份: 2010
请输入公历月份: 9
请输入公历日期: 24
请输入公历小时(0-23): 8:00
公历2010年9月24日4时对应的农历日期为:农历2010年8月17日
根据小六壬预测,该日期的占卜结果为:月份位置-留连, 日期位置-空亡, 农历时辰为:辰时-赤口


http://www.kler.cn/a/280382.html

相关文章:

  • 力扣网页端无法进入(问题已解决)
  • Linux 数据结构 顺序表 链表
  • 期末九天从入门到精通操作数据库(mysql)
  • .NET6 多环境,在开发时的应用场景
  • Remote Sensing(MDPI)期刊投稿历程(CV方向)
  • 敦煌智旅:Serverless 初探,运维提效 60%
  • 20240824给飞凌OK3588-C的核心板刷Ubuntu22.04后适配SONY索尼的HDMI OUT的机芯8530
  • Jmeter执行多机联合负载
  • SLF4J 警告 - SLF4J: Class path contains multiple SLF4J bindings.
  • 基于SSM+小程序的智慧旅游平台登录管理系统(旅游2)(源码+sql脚本+视频导入教程+文档)
  • React——useRef()
  • Qt: QComboBox
  • 美国高防服务器测评
  • 安卓AppBarLayout与ViewPager2里的fragment里的webview滑动冲突
  • openlayers10+vue3+ts
  • 视创云展线上3D云展,在线自由创作!
  • 买小鹏M03别急,我来浇两盆冷水
  • echarts最新封装柱状图
  • ASP.NET Core 入门教学四 集成Redis
  • SpringBoot集成kafka开发-消息消费的分区策略(消费者如何判断从哪个分区中消费消息的?)