date / time convert to time since php

后端 未结 5 753
你的背包
你的背包 2021-01-14 10:14

Hello in my database date / time are in this format

2010-06-01T18:20:25+0000

I\'d like to echo that out to time passed since that date / t

5条回答
  •  感动是毒
    2021-01-14 10:53

    Below is a function I wrote to do this. Feel free to use it.

    /**
     * Returns rough (in largest single unit) time elapsed between two times.
     * @param int $iTime0  Initial time, as time_t.
     * @param int $iTime1  Final time, as time_t. 0=use current time.
     * @return string Time elapsed, like "5 minutes" or "3 days" or "1 month".
     *              You might print "ago" after this return if $iTime1 is now.
     * @author Dan Kamins - dos at axonchisel dot net
     */
    function ax_getRoughTimeElapsedAsText($iTime0, $iTime1 = 0)
    {
        if ($iTime1 == 0) { $iTime1 = time(); }
        $iTimeElapsed = $iTime1 - $iTime0;
    
        if ($iTimeElapsed < (60)) {
            $iNum = intval($iTimeElapsed); $sUnit = "second";
        } else if ($iTimeElapsed < (60*60)) {
            $iNum = intval($iTimeElapsed / 60); $sUnit = "minute";
        } else if ($iTimeElapsed < (24*60*60)) {
            $iNum = intval($iTimeElapsed / (60*60)); $sUnit = "hour";
        } else if ($iTimeElapsed < (30*24*60*60)) {
            $iNum = intval($iTimeElapsed / (24*60*60)); $sUnit = "day";
        } else if ($iTimeElapsed < (365*24*60*60)) {
            $iNum = intval($iTimeElapsed / (30*24*60*60)); $sUnit = "month";
        } else {
            $iNum = intval($iTimeElapsed / (365*24*60*60)); $sUnit = "year";
        }
    
        return $iNum . " " . $sUnit . (($iNum != 1) ? "s" : "");
    }
    

    To use this func, you'd need to first convert your times to time_t format (integer #seconds since the "epoch"). Either of these PHP functions will probably help with that: http://php.net/strptime or http://php.net/strtotime.

提交回复
热议问题