关于天干地支及其计算

2023-05-16

       以天干地支计算日期是我国悠良的传统文化,最近在看如何计算人的生辰八字,写了个程序,但是只能算年的干支,月、日的干支计算方法太复杂了,望之只能却步,还是乖乖去查万年历比较好。这里记下关于干支的一些东西。

一、干支与岁星纪年的对应

       十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸(guǐ)。
       十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。

岁星纪年干支表示:

       岁星纪年十干曰:阏逢(yān féng)、旃蒙(zhān méng)、柔兆(róu zhào)、强圉(qiáng yǔ)、著雍(zhù yōng)、屠维(tú wéi)、上章(shàng zhāng)、重光(chóng guāng)、玄黓(xuán yì)、昭阳。

       岁星纪年十二支曰:困敦(kùn dūn)、赤奋若(chì fèn ruò)、摄提格(shè tí gé)、单阏(chán yān)、执徐(zhí xú)、大荒落(dà huāng luò)、敦牂(dūn zāng)、协洽(xié qià)、涒滩(tūn tān)、作噩(zuò è)、阉茂(yān mào)、大渊献。

六十花甲子、生肖、时辰:

子鼠丑牛寅虎卯兔辰龙巳蛇午马未羊申猴酉鸡戌狗亥猪
子时
(23-1)
丑时
(1-3)
寅时
(3-5)
卯时
(5-7)
辰时
(7-9)
巳时
(9-11)
午时
(11-13)
未时
(13-15)
申时
(15-17)
酉时
(17-19)
戌时
(19-21)
亥时
(21-23)
01.甲子02.乙丑03.丙寅04.丁卯05.戊辰06.己巳07.庚午08.辛未09.壬申10.癸酉
11.甲戌12.乙亥13.丙子14.丁丑15.戊寅16.己卯17.庚辰18.辛巳19.壬午20.癸未
21.甲申22.乙酉23.丙戌24.丁亥25.戊子26.己丑27.庚寅28.辛卯29.壬辰30.癸巳
31.甲午32.乙未33.丙申34.丁酉35.戊戌36.己亥37.庚子38.辛丑39.壬寅40.癸卯
41.甲辰42.乙巳43.丙午44.丁未45.戊申46.己酉47.庚戌48.辛亥49.壬子50.癸丑
51.甲寅52.乙卯53.丙辰54.丁巳55.戊午56.己未57.庚申58.辛酉59.壬戌60.癸亥

二、干支纪年程序

       目前只能纪年,月、日、时待补充,预计猴年马月补充完(狗头)~
       eightword.h

#ifndef __EIGHTWORD__
#define __EIGHTWORD__
#include<stdio.h>

#define CENTURY_20 4.6295
#define CENTURY_21 3.87
#define CENTURY_22 4.15

char tianGan[10][3] = { "甲", "乙", "丙", "丁", "戊", \
                           "己", "庚", "辛", "壬", "癸" };

char diZhi[12][3] = { "子", "丑", "寅", "卯", "辰", "巳", "午", \
                         "未", "申", "酉", "戌", "亥" };

void PrintYiJiaZi()
{
    int jiaZi = 60;
    int tianGanNum = 0, diZhiNum = 0;
    printf("天干:");
    for (int i = 0; i < 10; i++) {
        printf("%c%c%c ", tianGan[i][0], tianGan[i][1], tianGan[i][2]);
    }
    printf("\n地支:");
    for (int j = 0; j < 12; j++) {
        printf("%c%c%c ", diZhi[j][0], diZhi[j][1], diZhi[j][2]);
    }
    printf("\n\n");
    printf("六十花甲子:\n");
    while ( jiaZi > 0) {
        if (tianGanNum == 10) {
            tianGanNum = 0;
        }
        if (diZhiNum == 12) {
            diZhiNum = 0;
            printf("\n");
        }
        printf("%c%c%c%c%c%c ", tianGan[tianGanNum][0], tianGan[tianGanNum][1],
                                tianGan[tianGanNum][2],diZhi[diZhiNum][0],
                                diZhi[diZhiNum][1], diZhi[diZhiNum][2]);
        tianGanNum++;
        diZhiNum++;
        jiaZi--;
    }
    printf("\n"); 
}

void YearGanZhi(int year, char y_GanZhi[2][3], int gan)
{
    printf("请输入年份(如:1944):\n");
    printf("tips:公元1年为辛酉年,纪月依据夏历,正月建寅~~\n");
    scanf("%d",&year);
    gan = (year + 6) % 10;
    int zhi = (year + 8) % 12;

    for (int i= 0; i < 3; i++) {
        y_GanZhi[0][i] = tianGan[gan][i];
    }
    for (int j= 0; j < 3; j++) {
        y_GanZhi[1][j] = diZhi[zhi][j];
    }
    printf("%c%c%c%c%c%c\n", y_GanZhi[0][0], y_GanZhi[0][1], y_GanZhi[0][2]
                         , y_GanZhi[1][0], y_GanZhi[1][1], y_GanZhi[1][2]);
}

void MonthGanZhi(int month, int year, char m_GanZhi[2][3], int gan)
{
    printf("根据下面的口诀及年天干推断月柱\n");
    printf("甲己之年丙作首,\n");
    printf("乙庚之岁戊为头,\n");
    printf("丙辛必定寻庚起,\n");
    printf("丁壬壬位顺行流,\n");
    printf("更有戊癸何方觅,\n");
    printf("甲寅之上好追求.\n\n");
    int liChun = (year % 100 * 0.2422 + CENTURY_21) - ((year % 100 - 1) / 4);
}

void DayGanZhi(int gan)
{
    printf("根据下面的口诀及日天干推断时柱\n");
    printf("甲己还生甲,\n");
    printf("乙庚丙作初,\n");
    printf("丙辛从戊起,\n");
    printf("丁壬庚子居,\n");
    printf("戊癸何方始,\n");
    printf("壬子是真途.\n\n");
}

#endif

       eightword.c

#include "eightword.h"


int main(int argc, char* argv[])
{
    int year, month;
    int gan = 0;
    char y_GanZhi[2][3] = {"0"};
    char m_GanZhi[2][3] = {"0"};
    char d_GanZhi[2][3] = {"0"};
    char h_GanZhi[2][3] = {"0"};
    PrintYiJiaZi();
    YearGanZhi(year, y_GanZhi, gan);
    MonthGanZhi(month, year, m_GanZhi, gan);
    DayGanZhi(gan);
    printf("\n");
    return 0;
}

在这里插入图片描述
       这里顺便打印了干支及一个甲子,干支纪月和干支纪时可以根据后面的两个口诀,很容易理解,比写代码容易理解多了。

三、干支纪月

       干支纪月可以根据口诀:
                                          甲己之年丙作首,
                                          乙庚之岁戊为头,
                                          丙辛必定寻庚起,
                                          丁壬壬位顺行流,
                                          更有戊癸何方觅,
                                          甲寅之上好追求.
来自己推算。
       当知道了年份的天干,就可以根据口诀推算出月份的天干,而月份的地支根据夏历,正月建寅,即正月就是寅月,二月就是卯月,以此类推。
例如2022年的农历七月,2022年是壬寅年,根据“丁壬壬位顺行流”可知2022年的正月的天干是壬,而农历七月是申月,所以2022年七月的干支大概就是戊申。
       为什么要说大概呢?
       因为干支纪月的寅月是从春分这天开始计算的,而且每个月也都是根据二十四节来区分的。

根据口诀及二十字节有:

农历地支节气中气近似公历甲或己年乙或庚年丙或辛年丁或壬年戊或癸年
正月寅月立春-惊蛰雨水2月丙寅月戊寅月庚寅月壬寅月甲寅月
二月卯月惊蛰-清明春分3月丁卯月己卯月辛卯月癸卯月乙卯月
三月辰月清明-立夏谷雨4月戊辰月庚辰月壬辰月甲辰月丙辰月
四月巳月立夏-芒种小满5月己巳月辛巳月癸巳月乙巳月丁巳月
五月午月芒种-小暑夏至6月庚午月壬午月甲午月丙午月戊午月
六月未月小暑-立秋大暑7月辛未月癸未月乙未月丁未月己未月
七月申月立秋-白露处暑8月壬申月甲申月丙申月戊申月庚申月
八月酉月白露-寒露秋分9月癸酉月乙酉月丁酉月己酉月辛酉月
九月戌月寒露-立冬霜降10月甲戌月丙戌月戊戌月庚戌月壬戌月
十月亥月立冬-大雪小雪11月乙亥月丁亥月己亥月辛亥月癸亥月
十一月子月大雪-小寒冬至12月丙子月戊子月庚子月壬子月甲子月
十二月丑月小寒-立春大寒1月丁丑月己丑月辛丑月癸丑月乙丑月

       所以我到了干支纪月的这一步直接撞了南墙了,干支纪日更不用说了,还是查万年历,嘿嘿,万年历真好,嘿嘿。

四、干支计时

干支纪时可根据日的干支及口诀:
                                          甲己还生甲,
                                          乙庚丙作初,
                                          丙辛从戊起,
                                          丁壬庚子居,
                                          戊癸何方始,
                                          壬子是真途.
来计算。

       如2022年3月18日14时,年月日直接查万年历:
       2022年3月18日
       星期五农历二月十六
       壬寅年(虎年) 癸卯月 庚午日
       宜:解除 扫舍 馀事勿取
       忌:诸事不宜
       日的天干为庚,根据“乙庚丙作初”可知这一天的子时是丙子时,而14时的地支是未,也就是未时,天干则是癸,即14时是癸未时。所以这一天(2022年3月18日 )14时出生的人的八字就是:壬寅 癸卯 庚午 癸未。

       新时代的青年当求实上进,团结友爱,为实现中华民族的伟大复兴而努力~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于天干地支及其计算 的相关文章

  • 编码的历史

    快下班时 xff0c 爱问问题的小朋友Nico又问了一个问题 xff1a 34 sqlserver里面有char和nchar xff0c 那个n据说是指unicode的数据 xff0c 这个是什么意思 34 并不是所有简单的问题都很容易回答
  • 教你如何通过MCU配置S2E为TCP Server的工作模式

    在上一篇文章中讲了 如何通过MCU配置S2E为UDP模式 xff0c 相信小伙伴们已经了解了S2E的基本功能 xff0c 在这一篇中 xff0c 我们再接再厉 xff0c 继续学习一下 如何通过MCU配置S2E为TCP Server的工作模
  • ubuntu配置USB权限

    usbcan设备在ubutu下使用 xff0c 每次必须动用root权限才能使用 xff0c 比较繁琐 参考如下文章进行配置 xff1a https blog csdn net bigdog 1027 article details 790
  • SocketCAN学习笔记

    1 对SocketCAN的理解 69条消息 对Socket CAN的理解 xff08 1 xff09 CAN总线原理 yuzeze的博客 CSDN博客 can socket 对Socket CAN的理解 xff08 2 xff09 Sock
  • Golang写Post请求并获取返回值

    直接上代码 xff0c 其中可以在下面代码中添加 package main import fmt net http io ioutil net url func main 需要post的数据 以key value形式提交 data 61 m
  • postMan 汉化

    1 下载postman解压安装 xff0c 下载地址Postman 2 下载汉化包 Release 9 2 0 hlmd Postman cn GitHub 选择postMan对应的版本 3 找到postman根目录我的在c盘 xff0c
  • 2022 小学组试题

    1 史密斯数 若一个合数的质因数分解式逐为位相加之和等于其本身逐位相加之和 则称这个数为smith数 如4937775 3 5 5 65837 而3 5 5 6 5 8 3 7 42 4 9 3 7 7 7 5 42 所以4937775是s
  • usaco 1 回文素数快速筛选

    求指定区间的回文素数 include lt bits stdc 43 43 h gt define N 10000010 using namespace std bool st N int cnt 61 0 primes N n m voi
  • C++ STL 学习笔记

    MAP的用法 xff1a 389找不同 给定两个字符串 s 和 t xff0c 它们只包含小写字母 字符串 t 由字符串 s 随机重排 xff0c 然后在随机位置添加一个字母 请找出在 t 中被添加的字母 示例 输入 xff1a s 61
  • 大模型平台

    大模型训练平台的算力急速增长 xff1a 据报道 xff0c GPT3 5 的训练使用了微软专门建设的 AI 计算系统 xff0c 由 1 万个 V100 GPU 组成的高性能网络集群 xff0c 总算力消耗约 3640 PF days 即
  • Float IP 浮动IP地址

    xfeff xfeff 就是多个主机工作在 同一个集群中 xff0c 即两台主机以上 每台机器除了自己的实IP外 xff0c 会设置一个浮动IP xff0c 浮动IP与主机的服务 xff08 HTTP服务 邮箱服务 xff09 绑在一起的
  • linux 下安装 c++编译器的方法

    xfeff xfeff 假设你的电脑能够访问internet xff0c 这个命令会自动从网络下载并把软件安装到本地 超级用户权限 xff1a yum y install gcc c 43 43 另外一定不要天真的认为linux 下面 编译
  • linux 内核编译错误的原因

    xfeff xfeff 直接编译centos 7 内核目录下的代码出现如下错误 xff1a root 64 localhost 3 10 0 123 el7 x86 64 make make 1 No rule to make target
  • ifconfig 看到Rx error overrun 如何解决

    xfeff xfeff 一台机器经常收到丢包的报警 xff0c 先看看最底层的有没有问题 ethtool em2 egrep 39 Speed Duplex 39 Speed 1000Mb s Duplex Full ethtool S e
  • AES-GCM算法

    AES GCM算法简介 AES GCM算法是带认证和加密的算法 xff0c 同时可以对给定的原文 xff0c 生成加密数据和认证码 参数如下 xff1a 1 xff09 带加密的原文 2 xff09 存储加密后密文 3 xff09 IV向量
  • cmake 编译c++项目

    分两步 xff1a CMakeLists txt文件编写结束以后就可以对工程进行编译了 xff0c 进入build目录 并执行cmake和make指令 xff0c 如下 xff1a 第一步 cmake span class token pu
  • sshd 无法启用的问题 Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ss

    原文链接 xff1a http blog csdn net lynn kong article details 9112009 1 问题现象 版本 xff1a Grizzly master分支代码2013 06 17 部署 xff1a 三个
  • iptables nat

    NAT一般情况下分为SNAT xff0c DNAT和PNAT 此篇主要讲述的是使用iptables配置NAT xff0c 所以这3种NAT的区别和应用场景就简单的说明一下 SNAT xff1a 源地址转换 目标地址不变 xff0c 重新改写
  • Qt 的Cmake方式如何创建资源文件和添加类

    今天看到有人问Qt 的Cmake方式如何创建资源文件 xff0c 这个问题和添加类都是一样的 xff0c 也有朋友问如何添加类 xff0c 百度的回答是把cmake改成Qmake 这样等于没有回答 xff0c 根据自己的经验我在这里回答一下
  • ajax 请求头Authorization 添加账号密码访问

    在header中添加 34 Authorization 34 字段 xff0c 值为 34 api key api secret 34 进行base64加密后 在前面加入 34 Basic 34 Basic后有空格 字符串 最后形式为 34

随机推荐

  • Authorization—权限控制流程

    本篇是对Shiro体系架构的介绍 xff0c 本栏目大部分内容来自于Shiro官网 翻译过程中已经尽量保证用词的准确性和易懂性 xff0c 如有不准确或者不确切的地方 xff0c 请联系作者加以修改 本篇内容翻译自Authorization
  • C语言在头文件中用extern架起变量沟通的桥梁

    span class hljs comment a c span span class hljs keyword int span foo span class hljs keyword int span bar span class hl
  • 【C语言】5. 指针free后为什么要刻意指向NULL、野指针(原因、解决)、悬垂指针

    目录 1 指针free后为什么还要刻意指向NULL xff1f 2 野指针2 1 什么是野指针 xff1f 2 2 野指针形成的原因2 3 如何避免野指针 3 悬垂指针3 1 什么是悬垂指针 xff1f 3 2 示例代码3 3 解决方法 1
  • 【QT】UDP通信QUdpSocket(单播、广播、组播)

    目录 1 UDP通信概述2 UDP消息传送的三种模式3 QUdpSocket类的接口函数4 UDP单播和广播代码示例4 1 测试说明4 2 MainWindow h4 3 MainWindow cpp4 4 界面展示 5 UDP组播代码示例
  • Fiddler 调试HTTP工具,帮助Debug HTTP连接的免费工具

    Fiddler是一个C 实现的浏览器抓包和调试工具 xff0c fiddler启用后作为一个proxy存在于浏览器和服务器之间 xff0c 从中监测浏览器与服务器之间的http https级别的网络交互 目前可以支持各种主要浏览器如IE C
  • 对话框使用VIEW (转)

    现在的程序功能越来越复杂 xff0c 很多功能要求能在对话框中实现复杂的功能 xff0c 而在对话框中使用视图不像使用一些诸如静态控件 xff0c 编辑控件等那么方便 xff0c 下面文章用实例说明如何在对话框中使用视图 正文 http w
  • ubuntu系统下安装putty

    1 打开终端 xff0c 使用下面的命令来安装putty xff1a 1 1 sudo apt get update 1 2 sudo apt get install putty 上面两步成功则说明putty安装成功 2 接下来配置putt
  • 改变linux shell的输出效果

    文本终端的颜色可以使用 ANSI非常规字符序列 来生成 举例 xff1a echo e 34 033 44 37 5m ME 033 0m COOL 34 以上命令设置背景成为蓝色 xff0c 前景白色 xff0c 闪烁光标 xff0c 输
  • GNU ARM 汇编指令

    原文地址 http blog sina com cn s blog 59b189220100au1k html 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C 43 43 编写程序很方便 xff0c 但汇编源程序用于系统最
  • 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?

    什么是序列化 序列化 xff1a 把对象转换为字节序列的过程称为对象的序列化 反序列化 xff1a 把字节序列恢复为对象的过程称为对象的反序列化 怎么序列化 实现Serializable接口 xff0c 指定serialVersionUID
  • 寻迹小车笔记——红外对管(TCRT5000)原理

    一 概述 深色 xff08 黑色 xff09 的是发射端 xff0c 白色 xff08 透明 xff09 的是接收端 中间蓝色的是可以调节灵敏度的旋钮 TCRT5000光电传感器模块是基于TCRT5000红外光电传感器设计的一款红外反射式光
  • C语言判断一个数是否是水仙花数

    水仙花数是指一个N位正整数 xff08 N 3 xff09 xff0c 它的每个位上的数字的N次幂之和等于它本身 例如 xff1a 153 61 1 3 43 5 3 43 3 3 include lt stdio h gt int nar
  • C语言分类统计字符个数

    题目来源 xff1a 分类统计字符个数 PTA 本题要求实现一个函数 xff0c 统计给定字符串中英文字母 空格或回车 数字字符和其他字符的个数 函数接口定义 xff1a void StringCount char s 其中 char s
  • MIPS单周期CPU的设计——I型指令的设计

    一 一些概念 1 单周期CPU 指令周期 xff1a CPU从内存取出一条指令并执行这条指令的时间总和 CPU周期 xff1a 又称机器周期 xff0c CPU访问一次内存所花的时间较长 xff0c 因此用从内存读取一条指令字的最短时间来定
  • MIPS单周期CPU设计——lw和sw指令的设计

    1 lw xff0c sw指令格式及功能 指令 31 26 25 21 20 16 15 0 意义lw100011rsrtoffset从数存 xff08 数据存储器 xff09 中取数据写进寄存器sw101011rsrtoffset将寄存器
  • 计算机网络传输层概念及其协议

    一 概念 链路层保证的是点到点的可靠传输 xff0c 传输层保证端到端的可靠性 传输层是进程之间的通信 传输实体 xff1a 在收 发两端的传输层实现对等实体通信的硬件或软件 实现TCP协议的用户进程或者硬件称为TCP的传输实体 二 TCP
  • C++big three(构造函数、拷贝构造函数,拷贝赋值函数)

    一个类中只要带有指针类型的成员 xff0c 就必须自己写出big three xff08 构造函数 拷贝构造函数 xff0c 拷贝赋值函数 xff09 xff0c 如果没有指针类型的成员 xff0c 大部分情况下可以用默认的 字符串类是一个
  • 电网中DTU FTU RTU TTU的区别

    FTU xff08 Feeder Terminal Unit xff09 xff1a 馈线开关监控终端是装设在10KV断路器 负荷开关的开关监控装置 主要作用是采集各开关所在线路的电气参数 xff0c 并将这些信息向上级系统传输 xff1b
  • 他山之石可以攻玉

    计算之外的喜欢这一栏创建很久了 xff0c 但是一直没有内容 xff0c 目前勉强能够记录的大概就是我这一年里 xff08 2021 2022 xff09 读的书吧 人的一生很短暂 xff0c 也很宝贵 xff0c 能够在太平时节经历喜怒哀
  • 关于天干地支及其计算

    以天干地支计算日期是我国悠良的传统文化 xff0c 最近在看如何计算人的生辰八字 xff0c 写了个程序 xff0c 但是只能算年的干支 xff0c 月 日的干支计算方法太复杂了 xff0c 望之只能却步 xff0c 还是乖乖去查万年历比较