尝试获取两个日期的差异时出错

时间:2016-07-10 07:27:52

标签: php datetime date-difference dateinterval

我知道这个问题是关于让两个日期的差异被问到像几十次,但是尽管实现了我能找到的每个答案,我无法获得我的代码工作

我想要达到的目的是获得两个日期的差异,但我收到以下错误/警告:

Warning: date_format() expects parameter 1 to be DateTimeInterface, object given.

我的PHP代码

<?php
    // Include the function's library
    include_once "Functions.php";

    // Set default timezone_abbreviations_list
    date_default_timezone_set("Europe/Athens");

    // Establish connection to the database, pass the query and get the result
    $connection = connect("limited"); // Read-only
    $query = "SELECT `Last_Login` FROM `users`";
    $result = mysqli_query($connection, $query);

    // Initiate the variables
    $last_login = array();
    $now = date_create(date("Y-m-d h:i:s"));

    if (mysqli_num_rows($result)) {
        while ($data = mysqli_fetch_assoc($result)) {
            array_push($last_login, date_create($data["Last_Login"]));
            /* The date in the database is saved in this format : 2016-07-10 09:43:06 */
        }
    }

    for ($i = 0; $i < count($last_login); $i++) {
        $difference = date_diff($now, $last_login[$i], true) . "<br/>";
        echo date_format($difference, "%d");
    }
?>

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

#include <stdio.h> #include <stdbool.h> long int greatestCommonDivisor(long int m, long int n) { long int r; /* Check For Proper Input */ if ((m == 0) || (n == 0)) return 0; else if ((m < 0) || (n < 0)) return -1; do { r = m % n; if (r == 0) break; m = n; n = r; } while (true); return n; } char *array[12]; int main() { int n, i; scanf("%d", &n); for (i = 0; i < n; i++) { long int a, b, x, y; scanf("%ld %ld %ld %ld", &a, &b, &x, &y); long int p1 = greatestCommonDivisor(a, b); long int p2 = greatestCommonDivisor(x, y); if (p1 == p2) array[i] = ("YES\n"); else array[i] = ("NO\n"); } for (i = 0; i < n; i++) { printf("%s", array[i]); } return 0; } 会返回date_diff个对象,您无法使用DateInterval进行格式化。请改为date_format上的->format()

而不是$difference执行echo date_format($difference, "%d")

答案 1 :(得分:1)

我在寻找类似的东西,这是我发现的。

$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
$t = $diff->format("%a");
echo "$t";

答案 2 :(得分:-1)

我无法让问题中的代码生效,所以我最终制作了自己的脚本,这非常有效。

PHP代码

{{1}}