mysql datetime和now datetime对象之间的差异

Ede*_*ave 1 php mysql datetime

我希望在secounds中的日期之间得到时间,这是我的代码:

$rezultat = $polaczenie->query(sprintf("SELECT terminstart FROM uzytkownicy WHERE id=%d", $_SESSION['id']));
$wiersz = $rezultat->fetch_assoc();

$start = DateTime::createFromFormat('Y-m-d H:i:s', $wiersz['terminstart'])->format('Y-m-d H:i:s');
echo'<script>alert("'.$start.'");</script>';

$teraz = (new \DateTime())->format('Y-m-d H:i:s');
echo'<script>alert("'.$teraz.'");</script>';

$interval = $start->diff($teraz);
echo'<script>alert("'.$interval.'");</script>';
Run Code Online (Sandbox Code Playgroud)

我从警报中看到,$ start工作正常,$ teraz(现在意味着)工作正常,但我甚至没有得到差异的第3个错误.问题是什么?

Joh*_*nde 5

$start并且$teraz是字符串,而不是DateTime对象,因为你调用DateTime::format()它们.你只能在DateTime对象上做差异.

$start = new DateTime($wiersz['terminstart']);
$teraz = new \DateTime();
$interval = $start->diff($teraz);
Run Code Online (Sandbox Code Playgroud)

也:

  1. 不要使用javascript进行调试.那有点疯狂.
  2. DateTime::createFromFormat()如果您的日期已经是可接受的格式,则不需要(并且Ymd H:i:s是可接受的格式)