Как преобразовать текущую дату в формат 2013-04-30T00:00:00.000Z?

Как преобразовать текущую дату в формат 2019-04-30T00:00:00.000Z а за тем в Timestamp, чтобы время было 00:00:00?

Т.е. мне необходимо в скрипте понять, что наступил следующий день в формате такой даты: 2019-04-30T00:00:00.000Z, затем перевести новый день в Timestamp формат со временем 00:00:00 (не обращая внимание на реальное время). Чтобы максимально быстро отловить изменения по дате.

Пробовал что-то писать, ничего не получилось.

$date_online = date('Y-m-d 00:00:00');
$date = substr($date_online, 0, 10);


$d = DateTime::createFromFormat('Y-m-d H:i:s', $date_online);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}

Результат 1620334800


Ответы (2 шт):

Автор решения: Jean-Claude

Вот так выведет и Timestamp и дату в предложенной тобой формате (с учетом временной зоны Москвы):

$date = new DateTime("2019-04-30T00:00:00.000Z");
$date->setTimeZone(new DateTimeZone("Europe/Moscow"));
echo $date->format('H:i:s');
echo "\n";
echo $date->getTimestamp();
//03:00:00
//1556582400

Пример работы https://3v4l.org/0tF5O

Использованные функции

https://www.php.net/manual/ru/datetime.construct.php

https://www.php.net/manual/ru/datetime.format.php

→ Ссылка
Автор решения: NoSkill

А зачем лишний раз преобразовывать? Можно использовать класс DateTime, и просто обнулить время, чтобы перейти к началу суток:

$date = new DateTime();
$date->setTime(0,0,0);

echo $date->getTimestamp();

А не получается у вас потому, что date учитывает текущий временой пояс, а timestamp - нет, а буква Z в дате означает всемирное координированное время UTC.

→ Ссылка