Что не так с возвращенным php DateTime? - PullRequest
0 голосов
/ 13 марта 2019

В моем проекте Symfony 4 возвращается неправильная дата и время.

Когда я регистрирую Article, я задаю new DateTime, чтобы знать, когда он был создан:

$article->setCreatedAt(new \DateTime());

Вот как я получаю объект в Symfony:

public function getArticleByIdAction(Article $article) {
    $json = $this->serializer->encode($article, 'json');
    return $this->response->fromJsonString($json);
}

И это возвращаемые данные json:

{
  "id": 14,
  "name": "TestName",
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at egestas turpis, in fringilla dui. Cras fringilla at neque vel dapibus. Ut id purus convallis, tempor nisi vel, laoreet nunc. Sed nunc ipsum, volutpat a ligula sed, accumsan aliquam arcu. Pellentesque volutpat, nisi sed tristique ultrices, nibh tellus tristique mi, sit amet venenatis erat enim eget risus. Maecenas non dolor eleifend, mattis ipsum id, dictum turpis. Nulla est mauris, facilisis et consequat ut, elementum quis ex. Suspendisse tortor eros, rutrum ac vehicula eget, bibendum ac nibh. Sed magna urna, gravida ac pharetra eu, mollis at mi. Praesent ut dolor nec massa malesuada interdum. Cras vel nunc faucibus, porta diam non, ultricies neque. Curabitur tincidunt, lacus at suscipit laoreet, ante mi bibendum dui, nec cursus ipsum libero nec mauris. Morbi tempor faucibus ullamcorper. Maecenas quis rutrum ipsum, ut pretium eros. ",
  "createdAt": {
    "timezone": {
      "name": "Europe\/Berlin",
      "transitions": [
        {
          "ts": -9223372036854775808,
          "time": "-292277022657-01-27T08:29:52+0000",
          "offset": 3208,
          "isdst": false,
          "abbr": "LMT"
        },
        {
          "ts": -2147483648,
          "time": "1901-12-13T20:45:52+0000",
          "offset": 3600,
          "isdst": false,
          "abbr": "CET"
        }
      ],
      "location": {
        "country_code": "DE",
        "latitude": 52.5,
        "longitude": 13.366659999999995989128365181386470794677734375,
        "comments": "Germany (most areas)"
      }
    },
    "offset": 3600,
    "timestamp": 1552461412
  },
  "updatedAt": null,
  "isActive": true
}

Как я могу вернуть только дату, когда она хранитсяв Mysql?

Ответы [ 2 ]

1 голос
/ 13 марта 2019

DateTime - это объект, поэтому, когда вы кодируете его как json, он сериализует объект.Если вы просто хотите дату, вам нужно отформатировать ее.

$date = new DateTime();
$date->format(''Y-m-d H:i:s');
0 голосов
/ 13 марта 2019

Вы передаете экземпляр класса DateTime, а не фактическую дату и время.

Если вы просто хотите передать текущую дату и время, вы можете просто сделать:

$article->setCreatedAt(date('Y-m-d H:i:s));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...