Я хочу рассчитать EXACT за последние 30 дней в php с этого момента (например, 30 августа 14 23:06) до 30 дней назад (например, 1 августа 14 23:06). Я написал это, когда текущая дата и время идут в $ d1, а последние 30 дней — в $ d2, но почему-то я не получаю правильных результатов. Любая идея?
$url=$row["url"];
$pageid=getPageID($url);
$date=date('y-m-d g:i');
$d1=strtotime($date);
$d2=date(strtotime('today - 30 days'));
Спасибо
Проблема, вероятно, вызвана неправильным date()
вызов. Первый аргумент передан date()
должен быть формат (как показано в Документы) а вторая должна быть необязательной отметкой времени.
Попробуй это:
$d2 = date('c', strtotime('-30 days'));
Коротко говоря, весь фрагмент кода можно упростить следующим образом:
$url = $row["url"];
$pageid = getPageID($url);
$date = date('y-m-d g:i');
$d1 = time();
$d2 = date('y-m-d g:i', strtotime('-30 days'));
Вы также можете использовать DateTime
класса sub()
метод вместе с DateInterval
:
$now = new DateTime();
$back = $now->sub(DateInterval::createFromDateString('30 days'));
echo $back->format('y-m-d g:i');
если вы хотите выйти как 2014-08-01, попробуйте следующий код. Спасибо
$date = '2014-08-30 23:06';
$new_date = date('Y-m-d G:i', strtotime($date.' - 29 days'));
echo "30 days back is " . $new_date;
Я знаю, что вы сказали с PHP, однако я не могу представить, чтобы не получать записи из БД. Если вы хотите сделать это из БД, используйте:
$sql='SELECT * FROM myTable WHERE date > CURRENT_DATE - INTERVAL 30 DAY';
$pdo->query($sql);
Из вашего краткого описания и приведенного примера я считаю, что вы хотите, чтобы дата была 30 дней назад, а время было таким же, как сейчас. Приведенный ниже код будет служить этой цели. Благодарю.
<?php
$date=date('y-m-d g:i');
$time=date('g:i');
echo "Todays date:" . $date. "<br>";
$d2 = date('y-m-d', strtotime('-30 days'));
echo "30 days back:" . $d2 . ' ' .$time;
?>
Try:
echo date("Y-m-d h:i:s",strtotime('-30 days'));
Для более подробной информации щелчок Вот
Очень простые две строки кода
$date = new DateTime();
echo $date->modify('-30 day')->format('y-m-d g:i');