如何 字四柱排盘中,流年、流月、流日的十神如何获取 php 源码

时间: 2023-12-24 08:02:08 浏览: 30
以下是 PHP 中获取八字四柱排盘中,流年、流月、流日的十神的示例代码: ```php // 定义天干和地支的对应关系 $tiangan = array('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'); $dizhi = array('子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'); // 定义十神的对应关系 $shishen = array( '比肩', '劫财', '食神', '伤官', '偏财', '正财', '七杀', '正官', '偏印', '正印' ); // 获取出生年月日时的时间戳 $birthday = strtotime('1990-01-01 12:00:00'); // 计算出生时的八字 $bazi = calculate_bazi($birthday); // 计算流年、流月和流日的干支 $current = time(); $year = date('Y', $current); $month = date('n', $current); $day = date('j', $current); $hour = date('G', $current); $lyear = get_ganzhi($year); $lmonth = get_ganzhi_month($year, $month); $lday = get_ganzhi_day($year, $month, $day, $hour); // 确定流年、流月和流日的十神 $year_shishen = get_shishen($bazi['nian_gan'], $lyear['gan']); $month_shishen = get_shishen($bazi['yue_gan'], $lmonth['gan'], $year_shishen); $day_shishen = get_shishen($bazi['ri_gan'], $lday['gan'], $year_shishen); // 输出结果 echo "出生八字:{$bazi['nian_gan']}{$bazi['nian_zhi']} {$bazi['yue_gan']}{$bazi['yue_zhi']} {$bazi['ri_gan']}{$bazi['ri_zhi']} {$bazi['shi_gan']}{$bazi['shi_zhi']}\n"; echo "流年干支:{$lyear['gan']}{$lyear['zhi']},十神:{$year_shishen}\n"; echo "流月干支:{$lmonth['gan']}{$lmonth['zhi']},十神:{$month_shishen}\n"; echo "流日干支:{$lday['gan']}{$lday['zhi']},十神:{$day_shishen}\n"; // 计算八字 function calculate_bazi($birthday) { $timestamp = $birthday; $year = date('Y', $timestamp); $month = date('n', $timestamp); $day = date('j', $timestamp); $hour = date('G', $timestamp); // 计算年柱 $year_gan_index = ($year - 4) % 10; $year_zhi_index = ($year - 4) % 12; $nian_gan = $tiangan[$year_gan_index]; $nian_zhi = $dizhi[$year_zhi_index]; // 计算月柱 $month_gan_index = ($year_gan_index * 2 + $month - 2) % 10; $month_zhi_index = ($month - 1) % 12; $yue_gan = $tiangan[$month_gan_index]; $yue_zhi = $dizhi[$month_zhi_index]; // 计算日柱 $jd = get_julian_day($year, $month, $day) - 2440587.5; $jd += ($hour - 12) / 24.0; $wz = get_sun_longitude($jd); $ri_zhi_index = intval(($wz + 15) / 30) % 12; $ri_gan_index = ($year_gan_index * 5 + $ri_zhi_index + 1) % 10; $ri_gan = $tiangan[$ri_gan_index]; $ri_zhi = $dizhi[$ri_zhi_index]; // 计算时柱 $shi_zhi_index = intval($hour / 2) % 12; $shi_gan_index = ($ri_gan_index * 2 + $shi_zhi_index) % 10; $shi_gan = $tiangan[$shi_gan_index]; $shi_zhi = $dizhi[$shi_zhi_index]; // 返回八字信息 return array( 'nian_gan' => $nian_gan, 'nian_zhi' => $nian_zhi, 'yue_gan' => $yue_gan, 'yue_zhi' => $yue_zhi, 'ri_gan' => $ri_gan, 'ri_zhi' => $ri_zhi, 'shi_gan' => $shi_gan, 'shi_zhi' => $shi_zhi, ); } // 计算干支 function get_ganzhi($year) { global $tiangan, $dizhi; $gan_index = ($year - 4) % 10; $zhi_index = ($year - 4) % 12; return array('gan' => $tiangan[$gan_index], 'zhi' => $dizhi[$zhi_index]); } // 计算月干支 function get_ganzhi_month($year, $month) { global $tiangan, $dizhi; $gan_index = ($year - 4) % 10; $zhi_index = ($month - 1) % 12; return array('gan' => $tiangan[$gan_index], 'zhi' => $dizhi[$zhi_index]); } // 计算日干支 function get_ganzhi_day($year, $month, $day, $hour) { global $tiangan, $dizhi; $jd = get_julian_day($year, $month, $day) - 2440587.5; $jd += ($hour - 12) / 24.0; $wz = get_sun_longitude($jd); $zhi_index = intval(($wz + 15) / 30) % 12; $gan_index = ($year - 4) % 10 * 5 + $zhi_index + 1; $gan_index %= 10; return array('gan' => $tiangan[$gan_index], 'zhi' => $dizhi[$zhi_index]); } // 计算儒略日 function get_julian_day($year, $month, $day) { if ($month <= 2) { $year--; $month += 12; } $a = intval($year / 100); $b = 2 - $a + intval($a / 4); $jd = intval(365.25 * ($year + 4716)) + intval(30.6001 * ($month + 1)) + $day + $b - 1524.5; return $jd; } // 计算太阳黄经 function get_sun_longitude($jd) { $t = ($jd - 2451545.0) / 36525; $l = 280.46645 + 36000.76983 * $t + 0.0003032 * $t * $t; $m = 357.52910 + 35999.05030 * $t - 0.0001559 * $t * $t - 0.00000048 * $t * $t * $t; $e = 0.016708617 - 0.000042037 * $t - 0.0000001236 * $t * $t; $y = tan(deg2rad($e / 2)) * tan(deg2rad($e / 2)); $v = $m + 1.914600 * sin(deg2rad($m)) + 0.019993 * sin(deg2rad(2 * $m)); $r = 1.000001018 * (1 - $y) / sqrt(1 + 0.006861 * (1 - $y) * sin(deg2rad($v))); $xs = 125.04 - 1934.136 * $t; $l += 0.00256 * cos(deg2rad($xs)); $l += 0.00015 * cos(deg2rad(2 * $m)); $l -= 0.00070 - 0.000000038 * $t * $t; $z = $l - 0.00569 - 0.00478 * sin(deg2rad(125.04 - 1934.136 * $t)); $z += 0.00274 * sin(deg2rad(2 * $m - $xs)); return $z; } // 确定十神 function get_shishen($gan1, $gan2, $gan3 = '') { global $shishen; $gan1_index = array_search($gan1, $tiangan); $gan2_index = array_search($gan2, $tiangan); $diff_index = ($gan2_index - $gan1_index + 10) % 10; if ($gan3) { $gan3_index = array_search($gan3, $tiangan); $diff_index = ($gan3_index - $gan1_index + 10) % 10; } return $shishen[$diff_index]; } ``` 这段代码实现了八字排盘、流年、流月、流日干支的计算,以及十神的确定。你可以根据自己的需求进行修改和完善。

相关推荐

最新推荐

recommend-type

5G时代物联网大数据助力数字孪生的发展详情分析.docx

在5G、物联网和大数据三大支柱的支撑和护航下,“数字孪生”这一源自于航空航天器检修和工业物联网的定义,开始从设想迈向实际,经常出现于大家的视线中。
recommend-type

半桥电路的运行原理深入分析

在PWM和电子镇流器当中,半桥电路发挥着重要的作用。半桥电路由两个功率开关器件组成,它们以图腾柱的形式连接在一起,并进行输出,提供方波信号。本篇文章将为大家介绍半桥电路的工作原理,以及半桥电路当中应该...
recommend-type

LBM方柱绕流C++.docx

采用格子Boltzmann方法(LBM)对流体力学经典问题方柱绕流进行分析计算,得出的数据可用后处理软件进行处理。本代码仅供学习之用,对于新手较为友好,如有问题,请指正。欢迎大家在评论区发言
recommend-type

软考-考生常见操作说明-202405101400-纯图版.pdf

软考官网--2024常见操作说明:包括如何绘制网络图、UML图、表格等 模拟作答系统是计算机技术与软件专业技术资格(水平)考试的电子化考试系统界面、作答过程的仿真系统,为各级别、各资格涉及输入和页面显示的部分题型提供体验性练习。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依