2014-09-25 4 views
3

Я хочу рассчитать EXACT за 30 дней в php с этого момента (например, 30 авг. 14 23:06) до 30 дней назад (например, 1 авг 14 23:06). Я написал это, когда текущее время datetime идет в $ d1 и последние 30 дней, когда datetime идет в $ d2, но почему-то я не получаю правильных результатов. Есть идеи?Получите 30-дневную датировку вместе со временем

$url=$row["url"]; 
$pageid=getPageID($url); 
$date=date('y-m-d g:i'); 
$d1=strtotime($date); 
$d2=date(strtotime('today - 30 days')); 

Благодаря

+0

Какие результаты вы получаете? – Mike

+0

Вы используете MySQL для получения своих записей? – user1032531

+3

'strtotime ('- 30 days')' должно быть достаточно. – BenM

ответ

5

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

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

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

Спасибо ... $ d2 = date ('y-m-d g: i', strtotime ('- 30 дней')); это то, что я искал, но в синтаксисе. –

2

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

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

Большое спасибо –

+0

@MumbaiCabinCrew Добро пожаловать! :) – hek2mgl

1

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

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

спасибо. это была дополнительная информация :) –

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; 
?> 
+0

Большое спасибо –

2

, если вы хотите выйти, введите 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; 
0
Try: 
echo date("Y-m-d h:i:s",strtotime('-30 days')); 

Более подробно click здесь

Смежные вопросы