关于天干地支及其计算

news2024/11/17 15:39:30

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

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

       十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸(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时出生的人的八字就是:壬寅 癸卯 庚午 癸未。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django框架的资产管理系统设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[附源码]Python计算机毕业设计SSM京津冀区域产学研项目管理信息系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

50、IO流

*学习的难点&#xff1a;要知道在什么情况&#xff0c;该用什么流 补&#xff1a;ANSI码就是gbk码 一、基本概念&#xff1a; 1、什么是文件&#xff1a; 文件是保存数据的地方 2、文件流&#xff1a; 文件在程序中是以流的形式来操作的 &#xff08;1&#xff09;流&am…

XXL-Job海量数据处理-分片任务实战

文章目录一、需求1. 场景2. 分析3. 案例二、什么是分⽚任务2.1. 分⽚路由策略2.2. 海量数据处理2.3. 分片数量2.4. 分片值颁发2.5. 案例三、解决思路3.1. 数据拆分3.2. 分片数量3.3. 分⽚⽅式3.4. 路由策略3.5. 程序实战一、需求 1. 场景 有⼀个任务需要处理100W条数据&#…

【JavaScript 逆向】极验四代无感验证码逆向分析

前言 四代无感验证码相较于滑块验证码区别就是没有底图&#xff0c;一键通过模式&#xff0c;所以不需要轨迹以及计算缺口距离&#xff0c;步骤更少&#xff0c;四代滑块可以阅读&#xff1a;【JavaScript 逆向】极验四代滑块验证码逆向分析 声明 本文章中所有内容仅供学习交…

C++最后一次实验及实验总结

忙活了大半个学期&#xff0c;终于学完了C&#xff0c;虽然很基础&#xff0c;但是至少算是写完了实验&#xff0c;开心~~ 实验一 实验二 实验三 实验四 实验五 实验六 题目一 一、分析下面的程序&#xff0c;写出其运行时的输出结果。上机运行该程序&#xff0c;观察运行…

[附源码]计算机毕业设计ssm新能源电动汽车充电桩服务APP

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ROS action客户端和服务端通信(Ubuntu )

ROS action客户端和服务端通信 gcusms ROS 一般都是用 service 和 topic 进行数据之间的交互传输&#xff0c;因为这种通信方式无法满数据实时反馈的要求&#xff0c;所以采用 action 动作消息反馈通信机制&#xff08;实时反馈的任务进度&#xff0c;并且可以随时终止运行&am…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (6)-在线调试

AWPLC 目前还处于开发阶段的早期&#xff0c;写这个系列文章的目的&#xff0c;除了用来验证目前所做的工作外&#xff0c;还希望得到大家的指点和反馈。如果您有任何疑问和建议&#xff0c;请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere&#xff0c;是 ZLG 开发的开源…

vuex学习记录

为什么要用vuex 由于vue本身的特点。及页面是由多个组件构成。而组件又呈现一个二叉树状态。然后父向子需要进行通信。那如果是非父子关系&#xff0c;应该如何传值呢&#xff1f; 什么是vuex 专门为vue.js应用程序开发的状态管理模式。它采用集中式存储管理数据&#xff0c…

详解 Go 语言中的 init () 函数

阅读目录Go init 函数的详细说明包初始化Go init 函数的详细说明 初始化每个包后&#xff0c;会自动执行 init&#xff08;&#xff09;函数&#xff0c;并且执行优先级高于主函数的执行优先级。 init 函数通常用于&#xff1a; 变量初始化检查 / 修复状态注册器运行计算 包…

c语言零基础入门(完整版)

1软件下载 官网下载: https://sourceforge.net/projects/orwelldevcpp/ 百度网盘&#xff1a;https://pan.baidu.com/s/1mhHDjO8 提取密码&#xff1a;mken 推荐用百度网盘&#xff0c;官方下载太慢了 开始安装 首先双击打开刚刚下载的软件 点击0k 因为在安装过程中不能使用…

【计算机视觉】图像形成与颜色

图像形成与颜色 光照及阴影 辐射度学 颜色 颜色信息反映了入射光的能量分布与波长&#xff0c;可见光的波长在400nm到760nm之间。 RGB RGB分别代表三个基色&#xff08;R-红色、G-绿色、B-蓝色&#xff09;&#xff0c;如(0,0,0)表示黑色、(255, 255, 255)表示白色。其中2…

TS装饰器bindThis优雅实现React类组件中this绑定

初学React类组件时&#xff0c;最不爽的一点应该就是 this 指向问题了吧&#xff01;初识React的时候&#xff0c;肯定写过这样错误的demo。 import React from react; export class ReactTestClass extends React.Component {constructor(props) { super(props); this.state …

程序员如何进化成架构师?

作为程序员的上端&#xff0c;每一个架构师都承担着艰巨的任务&#xff1a;不仅仅要和产品进行周旋&#xff0c;还需要有十分坚实的技术作为基础打底。 那么&#xff0c;架构师都在考虑什么呢&#xff1f; 说到底还是程序架构、结构性的问题。 比如最近十分火爆的分布式系统…

STM32CubeIDE(stm32f767)添加DSP库

对于stm32f4 系列可以使用STM32Cube添加相应的库&#xff0c;自动生成代码。可以参考下面写的文章 (1条消息) STM32CubeMX关于添加DSP库的使用_W_oilpicture的博客-CSDN博客_cubemx dsp库 不过&#xff0c;对于stm32f767等M7的内核目前可能并不适用&#xff0c;需要自己手动添…

CS162 shell

本文记录我在做shell这个作业时用到有关资源&#xff0c;如Linux系统调用、Linux基础知识、C语言知识等。 这里只是非常简略地记录了一下&#xff0c;并且可能有理解不正确的地方&#xff0c;你可以把本文当作一个索引和没有思路时的启发&#xff0c;详细的信息可以再去查&…

SVM(支持向量机)基本形式推导

据说在dl之前是SVM撑起了ml的半片天&#xff0c;学习后发现SVM是由纯粹的数学推导、转化、求解、优化“堆砌”而来&#xff0c;不如说是数学撑起了ml&#xff0c;ml是数学的学科。以下根据老师ppt上讲解的思路讲讲个人对SVM基本形式推导的理解。 margin&#xff08;间隔&#x…

[附源码]计算机毕业设计现代诗歌交流平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…