Заранее извиняюсь, если ответ уже был, то ответа не нашел. И еще, я думал, что починил его, но он не был исправлен без видимой причины. У меня есть этот код:
$date = new \DateTime('now');
$dateFormatted = $date->format(\DateTime::ISO8601);
$body->setDate($dateFormatted);
это должно дать мне текущую дату и время в строковом формате, верно? после этого я передаю строку объекту json, сериализую ее и сохраняю в базе данных (это работает). Однако по какой-то причине объект datetime больше не форматируется и хранится в таком массиве:
{\"timezone\":{\"name\":\"+01:00\",\"transitions\":false,\"location\":false},\"offset\":3600,\"timestamp\":1518626336}
Это нарушает остальную часть моей функциональности, так как я хочу сохранить ее в объекте и воссоздать из нее объект даты и времени всякий раз, когда я снова его извлекаю. Я понятия не имею, почему это происходит. Я явно форматирую его в строку, или я делаю что-то не так? Я также пытался очистить кеш, но это ничего не дало.
[EDIT] У меня много ответов от людей, рассказывающих мне, как сериализовать объект в формат json, это не то, что я ищу (как указано в моем посте). Это пример сериализованного объекта json, содержащего массив даты и времени в моей базе данных вместо строки даты и времени: (это в основном сообщение с типом, датой, целевой датой и текстом сообщения)
"{\"type\":0,\"date\":{\"timezone\":{\"name\":\"+00:00\",\"transitions\":false,\"location\":false},\"offset\":0,\"timestamp\":1518638298},\"targetDate\":{\"timezone\":{\"name\":\"+01:00\",\"transitions\":false,\"location\":false},\"offset\":3600,\"timestamp\":1518638280},\"status\":0,\"messageText\":null}"
Чего я пытаюсь добиться с помощью $dateFormatted = $date->format(\DateTime::ISO8601); это строка, которую я могу сохранить в этом объекте. но то, что я получаю, это массив. я начинаю думать, что функциональность ->format() не работает.