Получите 30 дней назад дату и время

Я хочу рассчитать 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'));

Спасибо

4

Решение

Проблема, вероятно, вызвана неправильным date() вызов. Первый аргумент передан date() должен быть формат (как показано в Документы) а вторая должна быть необязательной отметкой времени.

Попробуй это:

$d2 = date('c', strtotime('-30 days'));

PHPFiddle


Коротко говоря, весь фрагмент кода можно упростить следующим образом:

$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'));
10

Другие решения

Вы также можете использовать DateTime класса sub() метод вместе с DateInterval:

$now = new DateTime();
$back = $now->sub(DateInterval::createFromDateString('30 days'));
echo $back->format('y-m-d g:i');
4

если вы хотите выйти как 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;
2

Я знаю, что вы сказали с PHP, однако я не могу представить, чтобы не получать записи из БД. Если вы хотите сделать это из БД, используйте:

$sql='SELECT * FROM myTable WHERE  date > CURRENT_DATE - INTERVAL 30 DAY';
$pdo->query($sql);
1

Из вашего краткого описания и приведенного примера я считаю, что вы хотите, чтобы дата была 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;
?>
1
Try:
echo date("Y-m-d h:i:s",strtotime('-30 days'));

Для более подробной информации щелчок Вот

1

Очень простые две строки кода

$date = new DateTime();
echo $date->modify('-30 day')->format('y-m-d g:i');

0
По вопросам рекламы [email protected]