php和1969年的时间函数

时间:2010-06-21 21:32:41

标签: php

我试图在用户添加条目时节省数据库中的时间。每次运行time()函数时,它都会打印(或返回)1277155717,代表1969。

我想知道是否有一种方法可以节省时间到数据库,它代表了今天的实际日期。

我正在使用该功能

/* Works out the time since the entry post, takes a an argument in unix time (seconds) */
function time_since($original) {
    // array of time period chunks
    $chunks = array(
        array(60 * 60 * 24 * 365 , 'year'),
        array(60 * 60 * 24 * 30 , 'month'),
        array(60 * 60 * 24 * 7, 'week'),
        array(60 * 60 * 24 , 'day'),
        array(60 * 60 , 'hour'),
        array(60 , 'minute'),
    );

    $today = time(); /* Current unix time  */
    $since = $today - $original;

    // $j saves performing the count function each time around the loop
    for ($i = 0, $j = count($chunks); $i < $j; $i++) {

        $seconds = $chunks[$i][0];
        $name = $chunks[$i][1];

        // finding the biggest chunk (if the chunk fits, break)
        if (($count = floor($since / $seconds)) != 0) {
            // DEBUG print "<!-- It's $name -->\n";
            break;
        }
    }

    $print = ($count == 1) ? '1 '.$name : "$count {$name}s";

    if ($i + 1 < $j) {
        // now getting the second item
        $seconds2 = $chunks[$i + 1][0];
        $name2 = $chunks[$i + 1][1];

        // add second item if it's greater than 0
        if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {
            $print .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s";
        }
    }
    return $print;
}

为了显示评论发布后的分钟数,年数,月数等,当我传递函数time()的值时,它返回(40年,6个月前);

3 个答案:

答案 0 :(得分:1)

为什么不使用sql的timestamp类型,即

INSERT INTO posts (content, created) VALUES ("Sample post", NOW());

答案 1 :(得分:0)

您想要时间戳还是实际格式化时间?'

如果是后者,请尝试:

$time = date("h:i:s");

答案 2 :(得分:0)

在开始实施自己的日期计算之前要非常小心。总是有奇怪的案件需要处理。在您的示例中,我认为您没有考虑夏令时或闰年。我不知道这对你是否重要。

如果您使用某个库为您进行日期计算,那么您的机会会更好。我建议你先看一下PHP中的date_diff function。我不知道它是否处理夏令时和闰年,但这就是我要开始的地方。