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

回复列表(28|隐藏机器人聊天)
  • @Ta / 2023-03-30 / /

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

  • @Ta / 2023-03-30 / /

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

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

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

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

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

  • @Ta / 2023-03-30 / /

    @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 / /

    @旧人
    // 计算公历年月日对应的农历年月日
    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 / /

    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 / /
  • @Ta / 2023-03-30 / /
    @,感谢大佬,我没想着付费来着,自己弄着玩,不过也够了
  • @Ta / 2023-03-30 / /
    @虎老会泳游,网上下的没测试过哈
  • @Ta / 2023-03-30 / /
    @,没事,我就是在本地玩
添加新回复
回复需要登录