2013-10-04 7 views
0

im, делая некоторые вещи с mktime, мне нужно добавить следующую дату еще на 30 дней, но ее возвращение мне 1970-01-30, что я делаю неправильно?PHP mktime() возвращает неверную дату

$strtime=strtotime("2013-10-04"); 
$fecha=date("Y-m-d",$strtime); 
echo $fecha."<br />"; 
$nueva_fecha=mktime(0,0,0,date("n",$fecha),date("j",$fecha)+30,date("Y",$fecha)); 
echo date("Y-m-d",$nueva_fecha)."<br />"; 

Результат:

2013-10-04

1970-01-30

+0

это должно быть mktime? – magicianiam

+0

Есть ли другой способ? Мне просто нужно суммировать 30 дней и получить с ним новую дату. –

+0

FYI, но я получил это предупреждение 3x на ваш mktime-вызов: Примечание. Неверное числовое число, встречающееся в date.php в строке 6 –

ответ

2

Дата ищет временную метку как ее второй параметр, а не строковое значение, представляющее это. Обновлено, чтобы передать его $ strtime.

$strtime=strtotime("2013-10-04"); 
$fecha=date("Y-m-d",$strtime); // <-- Unnecessary unless you want to echo the value. 
echo $fecha."<br />"; 
$nueva_fecha=mktime(0,0,0,date("n",$strtime),date("j",$strtime)+30,date("Y",$strtime)); 
echo date("Y-m-d",$nueva_fecha)."<br />"; 

Выход:

2013-10-04

2013-11-03

1

Если у вас уже есть StrToTime, почему и на date? Вместо этого вы могли бы использоваться + (30 дней в секундах) или просто особенность они предлагают вам + 1 day контрольный ответ: adding one day to a date

strtotime('2013-10-04 + 30 days');

Это будет печатать 2013-11-03: date('Y-m-d', strtotime('2013-10-04 + 30 days'))

1

вы можете попробовать это:

echo strtotime ("+ 1 день"), "\ n";

echo strtotime ("+ 30 day", strtotime (date ('D, d M Y'))), "\ n";

это добавит 30 дней к текущей дате.

Также strtotime очень полезен, вы можете использовать его еженедельно, ежемесячно и ежегодно.

2

Вы можете просто использовать следующую функцию для добавления 30 дней к дате ввод в эксплуатацию:

$date = strtotime("2013-10-04"); 
$new_date = strtotime("+30 days", $date); 

или просто к текущей дате:

$new_date = strototime("+30 days", time()); 
0

Вы можете использовать это также

<?php 

$date  = date("Y/m/d"); // example date in yyyy/mm/dd format 
$unix_time = strtotime($date); // covert date to unix time 

$sec_in_30_days = 60 * 60 * 24 * 30; // 60 seconds * 60 minutes * 24 hours * 30 days 

$new_unix_time = $unix_time + $sec_in_30_days; // add 30 days to unix time 
$date_in_30_days = date('Y/m/d', $new_unix_time); // convert new unix time to date 

// Output results: 
echo 'original current date: ' . $date . '<br />'; 
echo '<br />'; 
echo 'new date: ' . $date_in_30_days . '<br />'; 

?> 

Выход будет

оригинальный текущая дата: 2013/10/04

новая дата: 2013/11/03

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