En PHP, les dates de traitement et les heures sont l'une des tâches très courantes du développement quotidien. Parmi eux, Date_sub est une fonction très pratique qui nous permet de soustraire facilement l'intervalle de temps spécifié d'un objet DateTime . Ce tutoriel expliquera en détail comment utiliser la fonction date_sub pour soustraire une heure spécifique à partir de la date en cours, telles que le jour, le mois, l'année, l'heure, etc.
Date_sub est une fonction intégrée qui prend deux paramètres:
Un objet DateTime .
Un objet DateInterval .
La fonction consiste à soustraire l'intervalle de temps défini par DateInterval de l'objet DateTime et à renvoyer le nouvel objet DateTime .
Prototype de fonction:
DateTime date_sub ( DateTime $object , DateInterval $interval )
Remarque: À partir de PHP 8.0.0, Date_sub () a été marqué comme obsolète. Il est recommandé d'utiliser la méthode DateTime :: sub () pour atteindre la même fonction.
Tout d'abord, nous devons créer un objet DateTime représentant l'heure actuelle.
$date = new DateTime(); // Date et heure actuelles
Ensuite, créez un objet à intervalle de temps. Par exemple, nous voulons soustraire 10 jours:
$interval = new DateInterval('P10D'); // P Période express,D Indique le jour
Le format de DateInterval est ISO 8601, par exemple:
'P2Y' : 2 ans
'P3M' : 3 mois
'P15D' : 15 jours
'Pt5h' : 5 heures
'PT30M' : 30 minutes
Il est recommandé d'utiliser la méthode Sub () de DateTime pour le fonctionnement de soustraction:
$date->sub($interval);
Nous pouvons utiliser la méthode Format () pour sortir la dernière fois:
echo $date->format('Y-m-d H:i:s');
<?php
// Date et heure actuelles
$date = new DateTime();
// Créer un intervalle de temps,Par exemple, soustraire 10 ciel
$interval = new DateInterval('P10D');
// Soustrayez cet intervalle de la date
$date->sub($interval);
// Résultat de sortie
echo "10 ciel前的日期是:" . $date->format('Y-m-d H:i:s');
?>
Par exemple, votre site Web doit s'afficher une semaine avant la date de publication d'un article:
$publishDate = new DateTime('2025-05-28');
$interval = new DateInterval('P7D');
$publishDate->sub($interval);
echo $publishDate->format('Y-m-d');
$registerDate = new DateTime();
$interval = new DateInterval('P7D');
$expireDate = clone $registerDate;
$expireDate->add($interval); // Définissez le temps d'invalidation comme temps d'inscription +7ciel
echo "S'il te plaît " . $expireDate->format('Y-m-d H:i:s') . " Compte d'activation précédente。";
$now = new DateTime();
$interval = new DateInterval('P1M');
$lastMonth = clone $now;
$lastMonth->sub($interval);
// Par exemple, vous avez une page de statistiques de visite
$url = "https://gitbox.net/logs/view?start=" . $lastMonth->format('Y-m-d') . "&end=" . $now->format('Y-m-d');
echo "Afficher les journaux d'accès pour le mois dernier:<a href='$url'>$url</a>";
Erreur de format de temps : le format de DateInterval doit être strictement conforme à la spécification ISO 8601 et ne peut pas être écrit au hasard.
Problème de référence de l'objet : La modification directe de l'objet DateTime d'origine affectera la logique suivante et utilise le clone si nécessaire.
Problème de fuseau horaire : les fuseaux horaires par défaut incohérents peuvent entraîner une déviation temporelle. Il est recommandé de définir manuellement le fuseau horaire:
date_default_timezone_set('Asia/Shanghai');
Grâce à la combinaison de DateTime et DateInterval , PHP fournit aux développeurs des capacités de calcul temporel très flexibles. L'utilisation des méthodes Date_sub () ou DateTime :: sub () est relativement simple, mais elles sont puissantes et peuvent répondre à la plupart des exigences de soustraction des dattes. Dans le développement quotidien, s'il implique les fonctions de jugement, de statistiques, d'enregistrement, etc. de la plage de temps, il sera très utile de maîtriser l'utilisation de cette fonction.