Question

Comment puis-je ajouter un certain nombre de jours à la date actuelle en PHP?

J'ai déjà reçu la date du jour avec:

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

Il suffit d’ajouter x nombre de jours

Était-ce utile?

La solution

php prend en charge les fonctions de date de style c. Vous pouvez ajouter ou soustraire des périodes avec des phrases de style anglais via la fonction strtotime . exemples ...

$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;
}
?>

Autres conseils

un jour correspond à 86400 secondes.

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

Le moyen le plus simple d’ajouter x no. de jours ..

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

OU à partir de la date spécifiée ...

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

Le date_add () La fonction doit faire ce que vous voulez. En outre, consultez la documentation (non officielle, mais officielle) pour la DateTime , il est beaucoup plus agréable de travailler avec les fonctions procédurales de PHP.

Avec 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;

affichera

2012-12-24

2012-12-25

2012-12-26

Si vous avez besoin de ce code à plusieurs endroits, je vous conseillerais d'ajouter une fonction courte pour simplifier le test et le rendre plus facile à tester.

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;
}

Ensuite, vous pouvez l'utiliser n'importe où comme ceci:

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

Ajouter 15 jours à un élément sélectionné (à l'aide de la suggestion "Alive to Die")

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

De la documentation mktime :

  

mktime () est utile pour effectuer l’arithmétique et la validation des dates, car il calcule automatiquement la valeur correcte pour une entrée en dehors de la plage.

L’avantage de cette méthode est que vous pouvez ajouter ou soustraire n’importe quel intervalle de temps (heures, minutes, secondes, jours, mois ou années) dans une ligne de code facile à lire.

Méfiez-vous des performances, car ce code est environ 2,5 fois plus lent que strtotime ("+1 jour") en raison de tous les appels à la fonction date (). Pensez à réutiliser ces valeurs si vous êtes dans une boucle.

<?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top