PHP实现在线年龄计算器

1. 输入日期查询年龄
2. php laravel框架实现 代码
php 复制代码
 /**
     * 在线年龄计算器
     */
    public function ageDateCal()
    {
        // 输入的生日时间
        $birthday = $this->request('birthday');
        // 当前时间
        $currentDate = date('Y-m-d');

        // 计算周岁
        $age = date_diff(date_create($birthday), date_create($currentDate))->y;

        // 计算虚岁
        $nominalAge = $age + 1;

        // 计算已生活天数
        $days = date_diff(date_create($birthday), date_create($currentDate))->days;

        // 计算已生活分钟数
        // 获取当前时间戳
        $currentTimestamp = time();
        // 转换日期字符串为时间戳
        $inputTimestamp = strtotime($birthday);
        // 计算时间差(以分钟为单位)
        $minutes = round(abs($currentTimestamp - $inputTimestamp) / 60);


        // 计算距离一百岁还有多少年多少月多少日合计多少天
        $hundredYears = date("Y-m-d H:i:s", strtotime("$birthday+100year"));
        $diffDate = $this->diffDate($currentDate, $hundredYears);
        $remainingYears = $diffDate['y'];
        $remainingMonths = $diffDate['m'];
        $remainingDays = $diffDate['d'];
        $remainingTotalDays = $diffDate['a'];

        // 计算下次生日的日期和天数
        $nextBirthday = date('Y-m-d', strtotime($birthday . ' + ' . ($age + 1) . ' years'));
        $daysToNextBirthday = date_diff(date_create($currentDate), date_create($nextBirthday))->days;
        $week = $this->getWeekDay($nextBirthday);

        $data = [
            'age' => $age,
            'nominalAge' => $nominalAge,
            'days' => $days,
            'minutes' => $minutes,
            'remainingYears' => $remainingYears,
            'remainingMonths' => $remainingMonths,
            'remainingDays' => $remainingDays,
            'remainingTotalDays' => $remainingTotalDays,
            'nextBirthday' => $nextBirthday,
            'week' => $week,
            'daysToNextBirthday' => $daysToNextBirthday,
        ];

        return $this->jsonSuc(['result' => $data]);
    }

    /**
     * 判断星期几
     * @param $time
     * @return string
     */
    public function getWeekDay($time)
    {
        $week_array = ['日', '一', '二', '三', '四', '五', '六'];
        $week = date("w", strtotime($time));
        return '星期' . $week_array[$week];
    }
/**
     * function:计算两个日期相隔多少年,多少月,多少天
     * param string $date1[格式如:2020-11-5]
     * param string $date2[格式如:2023-12-01]
     * return array array('年','月','日');
     */
    function diffDate($date1, $date2)
    {
        $datetime1 = new \DateTime($date1);
        $datetime2 = new \DateTime($date2);
        $interval = $datetime1->diff($datetime2);
        $time['y'] = $interval->format('%Y');
        $time['m'] = $interval->format('%m');
        $time['d'] = $interval->format('%d');
        $time['h'] = $interval->format('%H');
        $time['i'] = $interval->format('%i');
        $time['s'] = $interval->format('%s');
        $time['a'] = $interval->format('%a');    // 两个时间相差总天数
        return $time;
    }
相关推荐
JaguarJack1 小时前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo1 小时前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack16 小时前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay2 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954482 天前
CTF 伪协议
php
BingoGo4 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack4 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo5 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack5 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack6 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端