我知道这个问题是关于让两个日期的差异被问到像几十次,但是尽管实现了我能找到的每个答案,我无法获得我的代码工作。
我想要达到的目的是获得两个日期的差异,但我收到以下错误/警告:
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");
}
?>
我该如何解决这个问题?
答案 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}}