登录 立即注册

首页 > 绿虎论坛 > 电脑 > 讨论/求助 (发帖)

有没有大佬有八字排盘的PHP程序


『回复列表(28|隐藏机器人聊天)』

20.

@ChatGPT,出错的代码如下return (object [
'year' => $lunarYear,
'month' => $lunarMonth,
'day' => $lunarDay,
]);

(/@Ta/2023-03-30 14:51//)

21.

@旧人,这个错误是因为您使用了一个错误的语法来创建一个对象。正确的方法是使用 new stdClass()new \stdClass() 来创建一个空的标准类,然后使用对象属性的方式来设置值。

例如,您可以修改代码如下:

return (object) [
    'year' => $lunarYear,
    'month' => $lunarMonth,
    'day' => $lunarDay,
];

这样就可以创建一个包含年、月、日属性的对象,并将其作为函数返回值返回。

注意,这里需要使用括号将数组转换为对象,因为箭头符号 => 在对象中不能使用。

(/@Ta/2023-03-30 14:51//)

22.

@ChatGPT,补充省略的部分
// 计算农历日期和节气的类
class Lunar {
// 农历信息表
private static $LunarTable = array(
array(2635, 2698, 0, 15.2184),
// ... 中间省略部分
array(4645, 4645, 0, 14.5),
array(4646, 4646, 1, 13.8370),
array(4647, 4647, 0, 15.1416),
// ... 中间省略部分
);

(/@Ta/2023-03-30 14:55//)

23.

@旧人
// 计算公历年月日对应的农历年月日
public static function SolarToLunar($year, $month, $day) {
if ($year < 1900 || $year > 2100) {
return false;
}
if ($month < 1 || $month > 12) {
return false;
}
if ($day < 1 || $day > 31) {
return false;
}
$offset = (strtotime("{$year}-{$month}-{$day}") - strtotime("1900-1-31")) / 86400;
$dayCyl = $offset + 40;
$monCyl = 14;
for ($i = 1900; $i < 2101 && $offset > 0; $i++) {
$daysInYear = self::getDaysInLunarYear($i);
$offset -= $daysInYear;
$monCyl += 12;
}
if ($offset < 0) {
$offset += $daysInYear;
$i--;
$monCyl -= 12;
}
$year = $i;
$yearCyl = $i - 1864;
$leapMonth = self::getLeapMonth($i);
$isLeap = false;
for ($i = 1; $i < 13 && $offset > 0; $i++) {
if ($leapMonth > 0 && $i == ($leapMonth + 1) && !$isLeap) {
$i--;
$isLeap = true;
$daysInMonth = self::getDaysInLeapMonth($year);
} else {
$daysInMonth = self::getDaysInLunarMonth($year, $i);
}
if ($isLeap && $i == ($leapMonth + 1)) {
$isLeap = false;
}
$offset -= $daysInMonth;
if (!$isLeap) {
$monCyl++;
}
}
if ($offset == 0 && $leapMonth > 0 && $i == $leapMonth + 1) {
if ($isLeap) {
$isLeap = false;
} else {
$isLeap = true;
$i--;
$monCyl--;
}
}
if ($offset < 0) {
$offset += $daysInMonth;
$i--;
$monCyl--;
}
$month = $i;
$day = $offset + 1;
if ($leapMonth > 0 && $month > $leapMonth) {
$month--;
if ($month == $leapMonth) {
if ($isLeap) {
$isLeap = false;
} else {
$isLeap = true;
$month++;
}
}
}
if ($isLeap) {
$lunarMonth = self::$LunarMonths[$month - 1].'闰';
} else {
$lunarMonth = self::$LunarMonths[$month - 1];
}
$lunarDay = self::getLunarDay($day);
return (object) [
'year' => $year,
'month' => $month,
'day' => $day,
'isLeap' => $isLeap,
'lunarYear' => self::getLunarYearName($year),
'lunarMonth' => $lunarMonth,
'l

(/@Ta/2023-03-30 14:56//)

24.

ChatGPT写的八字php程序,修复了一些运行的错误,不过我测试了一下农历好像算的不太准确,其他的也看不懂,有人有兴趣再改改吧
chatgpt八字.zip(4.6 KB)
Screenshot_2023-03-30-16-01-18-626_mark.via-edit.jpg(288.06 KB)

(/@Ta/2023-03-30 16:03//)

25. @虎老会泳游,看看这个源码能用不付费测算源码官方正版.zip(177.25 MB)
(/@Ta/2023-03-30 17:17//)

26. @,感谢大佬,我没想着付费来着,自己弄着玩,不过也够了
(/@Ta/2023-03-30 17:39//)

27. @虎老会泳游,网上下的没测试过哈
(/@Ta/2023-03-30 17:48//)

28. @,没事,我就是在本地玩
(/@Ta/2023-03-30 17:54//)

上一页 2/2页,共28楼

回复需要登录

12月1日 07:52 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1