Sådan bruges funktionen date_sub() i PHP

Sadan Bruges Funktionen Date Sub I Php



Det date_sub() er en funktion af Dato tid klasse, som er en del af PHPs dato- og tidsforlængelse. Det bruges til at trække et specificeret interval fra en given dato. Det kan bruges til at beregne en fremtidig dato ved at trække en eller flere dage, måneder eller år fra den aktuelle dato. Det date_sub() funktion returnerer en ny Dato tid objekt, der repræsenterer datoen og klokkeslættet efter, at beregningen er foretaget.

Grundlæggende syntaks

Syntaksen til brug date_sub() funktion er angivet nedenfor:

dato_under ( Dato tid $objekt , DatoInterval $interval )

Her, $objekt er Dato tid objekt du vil trække intervallet fra, og $interval er DatoInterval objekt, der angiver det interval, du vil trække fra. Bemærk, at begge argumenter er nødvendige for at bruge date_sub() fungere korrekt.







Arbejde med DateInterval

For at bruge date_sub() funktion, skal du oprette en DatoInterval objekt, der angiver mængden af ​​tid, du vil trække fra din oprindelige dato-tid. DatoInterval objekter kan oprettes ved hjælp af DatoInterval konstruktør. Konstruktøren tager en strengparameter, der specificerer intervallet i et format som P1D (en dag), P1M (en måned), P1Y (et år) og P1DT1H (en dag og en time).



Eksempler

// Træk en dag fra
$interval = ny DatoInterval ( 'P1D' ) ; // Træk en måned fra
$interval = ny DatoInterval ( 'P1M' ) ;

// Træk et år fra
$interval = ny DatoInterval ( 'P1Y' ) ;

Sådan bruges PHP date_sub()-funktionen

Når du har en DatoInterval objekt, kan du kombinere det med en Dato tid objekt for at beregne en ny dato-tid. Her er et eksempel, der trækker en dag fra den aktuelle dato:





$datetime = ny Dato tid ( ) ;

$interval = ny DatoInterval ( 'P1D' ) ;

dato_under ( $datetime , $interval ) ;

ekko $datetime -> format ( 'Y-m-d H:i:s' ) ;

?>

Som du kan se, er det nye datetime en dag tidligere end den aktuelle dato.





Det er også muligt at trække timer, minutter og sekunder fra et DateTime-objekt ved hjælp af date_sub() fungere. For at trække timer fra kan du overføre datointervallet som PT1H, hvilket betyder at trække en time fra. Overvej f.eks. følgende kode:





$datetime = ny Dato tid ( '2023-05-16 14:43:00' ) ;

dato_under ( $datetime , ny DatoInterval ( 'PT1H' ) ) ;

ekko $datetime -> format ( 'Y-m-d H:i:s' ) ;

?>

Dette trækker en time fra DateTime-objektet og opdaterer objektet med den nye værdi. Du kan få adgang til den nye værdi ved at bruge format() funktion af DateTime-objektet.

Eksempel 1: Subtrahering af forskellige intervaller

Det date_sub() funktionen giver mulighed for at trække forskellige intervaller fra, ikke kun dage. Lad os overveje et scenarie, hvor vi ønsker at trække 2 timer og 30 minutter fra en given dato og tid.



$dato = ny Dato tid ( '2023-11-02 10:32:45' ) ;

$interval = ny DatoInterval ( 'PT1H15M' ) ;

dato_under ( $dato , $interval ) ;

ekko $dato -> format ( 'Å-m-d H:i:s' ) ;

?>

I dette eksempel opretter vi et DateTime-objekt, der repræsenterer datoen og klokkeslættet '2023-11-02 10:32:45' . Vi laver også en DatoInterval objekt, der repræsenterer en periode på 1 time og 15 minutter ved brug af 'PT1H15M'-formatet. Vi bruger så date_sub() funktion til at trække intervallet fra dato og klokkeslæt.

Eksempel 2: Subtrahering af flere intervaller

Du kan også bruge date_sub() funktion til at trække flere intervaller fra et DateTime-objekt. Syntaksen er enkel: Opret blot et nyt DateInterval-objekt for hvert interval, du vil trække fra, og send dem alle til date_sub() fungere som et array.



$intervaller = array (

ny DatoInterval ( 'P1Y' ) ,

ny DatoInterval ( 'P6M' ) ,

ny DatoInterval ( 'P3D' )

) ;

$datetime = ny Dato tid ( ) ;

for hver ( $intervaller som $interval ) {

dato_under ( $datetime , $interval ) ;

}

ekko $datetime -> format ( 'Y-m-d H:i:s' ) ;

?>

I dette eksempel har vi trukket et år, seks måneder og tre dage fra datoen.

Eksempel 3: date_sub() med tidszoner

En ting skal du være opmærksom på, når du bruger date_sub() funktion er, at det kan påvirke tidszonen for din Dato tid objekt. Som standard, Dato tid objekter bruger tidszonen på din server. Men hvis du vil arbejde med en anden tidszone, kan du indstille den eksplicit ved hjælp af setTimezone() metode.



$datetime = ny Dato tid ( 'nu' , ny DatoTimeZone ( 'Amerika/New_York' ) ) ;

$interval = ny DatoInterval ( 'P1D' ) ;

dato_under ( $datetime , $interval ) ;

ekko $datetime -> format ( 'Y-m-d H:i:s' ) ;

?>

I dette eksempel satte vi tidszonen til America/New_York og trak en dag fra dato og klokkeslæt.

Når du trækker intervaller fra ved hjælp af date_sub() funktion, er det vigtigt at bemærke, at den resulterende dato justeres automatisk, hvis den bliver ugyldig.

Konklusion

Det date_sub() funktion i PHP giver en bekvem måde at trække intervaller fra DateTime-objekter på. Ved at bruge denne funktion kan udviklere nemt udføre operationer såsom at trække dage, timer, minutter eller komplekse intervaller fra en given dato og tid. Det date_sub() funktion tilbyder fleksibilitet og nøjagtighed i håndtering af datoberegninger, hvilket gør den til et værdifuldt værktøj til at arbejde med datoer og klokkeslæt i PHP-applikationer.