Pergunta

Como faço para adicionar um certo número de dias para a data atual no PHP?

Eu já tenho a data atual com:

$today = date('y:m:d');

Apenas necessidade de adicionar x número de dias para ele

Foi útil?

Solução

suportes php c funções de data estilo. Você pode adicionar ou data-períodos subtraia com frases de estilo de linguagem Inglês através da função strtotime. exemplos ...

$Today=date('y:m:d');

// add 3 days to date
$NewDate=Date('y:m:d', strtotime("+3 days"));

// subtract 3 days from date
$NewDate=Date('y:m:d', strtotime("-3 days"));

// PHP returns last sunday's date
$NewDate=Date('y:m:d', strtotime("Last Sunday"));

// One week from last sunday
$NewDate=Date('y:m:d', strtotime("+7 days Last Sunday"));

ou

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

Outras dicas

por dia é 86400 segundos.

$tomorrow = date('y:m:d', time() + 86400);

A maneira mais simples de adicionar x não. de dias ..

echo date('Y-m-d',strtotime("+1 day"));    //+1 day from today

ou a partir da data especificada ...

echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));

O date_add() função deve fazer o que quiser. Além disso, confira os documentos (não-oficial, mas os oficiais são um pouco escassas) para a DateTime objeto, é muito melhor do que trabalhar com as funções processuais em PHP.

Com o PHP 5.3

    $date = new DateTime();
    $interval = new DateInterval('P1D');
    echo $date->format('Y-m-d') , PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;
    $date->add($interval);
    echo $date->format('Y-m-d'), PHP_EOL;

saída vontade

2012/12/24

2012/12/25

2012/12/26

Se você precisa este código em vários lugares, então eu sugiro que você adicionar uma pequena função para manter o seu código mais simples e mais fácil de teste.

function add_days( $days, $from_date = null ) {
    if ( is_numeric( $from_date ) ) { 
        $new_date = $from_date; 
    } else { 
        $new_date = time();
    }

    // Timestamp is the number of seconds since an event in the past
    // To increate the value by one day we have to add 86400 seconds to the value
    // 86400 = 24h * 60m * 60s
    $new_date += $days * 86400;

    return $new_date;
}

Em seguida, você pode usá-lo em qualquer lugar como este:

$today       = add_days( 0 );
$tomorrow    = add_days( 1 );
$yesterday   = add_days( -1 );
$in_36_hours = add_days( 1.5 );

$first_reminder  = add_days( 10 );
$second_reminder = add_days( 5, $first_reminder );
$last_reminder   = add_days( 3, $second_reminder );

Adicionar 15 dias para um elemento select (usando "vivo para morrer" sugestão)

<select id="date_list" class="form-control" style="width:100%;">
<?php
$max_dates = 15;
$countDates = 0;
while ($countDates < $max_dates) {
    $NewDate=Date('F d, Y', strtotime("+".$countDates." days"));
    echo "<option>" . $NewDate . "</option>";
    $countDates += 1;
}
?>

$NewDate=Date('Y-m-d', strtotime("+365 days"));

echo $ NewDate; // 2020/05/21

$NewTime = mktime(date('G'), date('i'), date('s'), date('n'), date('j') + $DaysToAdd, date('Y'));

A partir mktime documentação :

mktime () é útil para fazer data aritmética e validação, enquanto ela calculará automaticamente o valor correto para a entrada fora-de-gama.

A vantagem deste método é que você pode adicionar ou subtrair qualquer intervalo de tempo (horas, minutos, segundos, dias, meses ou anos) em um fácil de ler linha de código.

Cuidado há uma compensação no desempenho, como este código é de cerca de 2,5 vezes mais lento do que strtotime ( "+ um dia"), devido a todas as chamadas para a função date (). Considere re-usando esses valores se você estiver em um loop.

<?php
$dt = new DateTime;
if(isset($_GET['year']) && isset($_GET['week'])) {
    $dt->setISODate($_GET['year'], $_GET['week']);
} else {
    $dt->setISODate($dt->format('o'), $dt->format('W'));
}
$year = $dt->format('o');
$week = $dt->format('W');
?>

<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week-1).'&year='.$year; ?>">Pre Week</a> 
<a href="<?php echo $_SERVER['PHP_SELF'].'?week='.($week+1).'&year='.$year; ?>">Next Week</a>
<table width="100%" style="height: 75px; border: 1px solid #00A2FF;">
<tr>
<td style="display: table-cell;
    vertical-align: middle;
    cursor: pointer;
    width: 75px;
    height: 75px;
    border: 4px solid #00A2FF;
    border-radius: 50%;">Employee</td>
<?php
do {
    echo "<td>" . $dt->format('M') . "<br>" . $dt->format('d M Y') . "</td>\n";
    $dt->modify('+1 day');
} while ($week == $dt->format('W'));
?>
</tr>
</table>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top