首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql+php两次减法并显示差异

问mysql+php两次减法并显示差异
EN

Stack Overflow用户
提问于 2009-12-12 11:10:59
回答 2查看 2.1K关注 0票数 2

我必须显示mysql中的column(reg_time)与当前时间之间的差异,以便最终输出(在几分钟、秒或几小时或几天内显示一些php之后)为:

注册日期:8小时前。

有什么功能可以做到吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-12 11:14:51

代码语言:javascript
复制
//End date is current date
//$start_date, lets say sep 05 82 : 00:00:00

$seconds_dif = mktime(date("G"),date("i"),date("s"),date("m"),date("d"),date("Y")) - mktime('00','00','00','09','05','1982');

//Difference in seconds is $seconds_dif

//Now only math calculation to figure out months/years..

echo '<br />Years Difference   = '. floor($seconds_dif/365/60/60/24);
echo '<br />Months Difference  = '. floor($seconds_dif/60/60/24/7/4);
echo '<br />Weeks Difference   = '. floor($seconds_dif/60/60/24/7);
echo '<br />Days Difference    = '. floor($seconds_dif/60/60/24);
echo '<br />Hours Difference   = '. floor($seconds_dif/60/60);
echo '<br />Minutes Difference = '. floor($seconds_dif/60);

在此发现:http://www.webhostingtalk.com/showthread.php?t=453668

您需要为数据格式编辑第3行代码:mktime(“00”、“00”、“00”、“09”、“05”、“1982”)

此外,为了便于使用,您还需要将此代码包装成一个函数:

代码语言:javascript
复制
/**
 * Return string with date time difference between two arguments
 * @param $start_date integer Start date in unix time (seconds from January 1 1970), you can use strtotime('24 November 2003 13:45:54'), for example
 * @param $end_date integer [optional] End date in unix time, by default it equals now
 * @return string
 */
function getDateTimeDifference($start_date, $end_date = time()) {
    $end_date = mktime(date("G", $end_date),date("i", $end_date),date("s", $end_date),date("m", $end_date),date("d", $end_date),date("Y", $end_date));
    $difference = $end_date - mktime(date("G", $start_date),date("i", $start_date),date("s", $start_date),date("m", $start_date),date("d", $start_date),date("Y", $start_date));
    $years = floor($seconds_dif/365/60/60/24);
    $months = floor($seconds_dif/60/60/24/7/4);
    $weeks = floor($seconds_dif/60/60/24/7);
    $days = floor($seconds_dif/60/60/24);
    $hours = floor($seconds_dif/60/60);
    $minutes = floor($seconds_dif/60);

    $ret = 'Difference: ';
    if (!empty($years))
        $ret .= $years . ' years, ';
    if (!empty($months))
        $ret .= $months . ' months, ';
    if (!empty($weeks))
        $ret .= $weeks . ' weeks, ';
    if (!empty($days))
        $ret .= $days . ' days, ';
    if (!empty($hours))
        $ret .= $hours . ' hours, ';
    if (!empty($minutes))
        $ret .= $minutes . 'minutes';

    return $ret;
}
票数 2
EN

Stack Overflow用户

发布于 2009-12-12 11:28:38

看看MySQL函数timediff() (4.1.1+)和时间戳() (5.0+)。

和php方法日期::diff() (5.3+)

例如:

代码语言:javascript
复制
SELECT Now(), TIMESTAMPDIFF(HOUR, Now(), '2009-12-12 06:15:34')

刚回来

"2009-12- 12 :34:00";"-6“

在我的机器上。和

代码语言:javascript
复制
$dt = new DateTime('2008-03-18 06:15:34');
echo $dt->diff(new DateTime())->format('%y %d %h');

(目前)印刷品

代码语言:javascript
复制
1 25 6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1893080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档