Как преобразовать текущую дату в формат 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 шт):
Вот так выведет и 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
Использованные функции
А зачем лишний раз преобразовывать? Можно использовать класс DateTime, и просто обнулить время, чтобы перейти к началу суток:
$date = new DateTime();
$date->setTime(0,0,0);
echo $date->getTimestamp();
А не получается у вас потому, что date учитывает текущий временой пояс, а timestamp - нет, а буква Z в дате означает всемирное координированное время UTC.