@codenerd på twitter Mit seneste tweet:

Sammenligning af datoer i PHP

Efter at være blevet spurgt to gange, i løbet af weekenden, om hvordan man sammenligner datoer i PHP, tænkte jeg det var tid til et lille blogindlæg.

Sammenligning af Datoer er faktisk utroligt nemt når man lige ved hvordan 😀

Med PHPs funktion php:strtotime er det muligt at konverterer stort set hvilken som helst dato information til Unix timestamp. Hurtigt forklaret angiver et Unix timestamp en given dato i form af antal sekunder siden 1. januar 1970. Dette betyder at en sammenligning af to datoer angivet i Unix timestamp er så simpelt som noget kunne være.

Lad os antage at vi har en dato angivet i YYYY-MM-DD (fx fra et mysql date felt)
og vi ønsker at se om denne dato er større end den nuværende dato. Først og fremmest skal vi bruge dags dato. Dette er nemt at hente ud med php:date hvorefter både sammenlignings dato og dagsdato skal konverteres vha php:strtotime som i eksemplet herunder:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$dato = "2007-10-01"; //dato vi skal tjekke
$idag = date("Y-m-d"); //dags dato
$idag_timestamp= strtotime($idag); //konverter til timestamp
$dato_timestamp = strtotime($dato); //konverter datoen til timestamp
if ($dato_timestamp > $idag_timestamp) {
echo 'Datoen er større end i dag';
} else {
echo 'Datoen er mindre end i dag';
}
?>

Ovenstående er ret simpelt, men mulighederne i php:strtotime er uanede. I PHPs dokumentation ses fx følgende:

PHP
1
2
3
4
5
6
7
8
9
<?php
echo strtotime("now"), "n";
echo strtotime("10 September 2000"), "n";
echo strtotime("+1 day"), "n";
echo strtotime("+1 week"), "n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "n";
echo strtotime("next Thursday"), "n";
echo strtotime("last Monday"), "n";
?>

Som alle er gyldige inputs i php:strtotime, og som alle returnerer gyldige timestamps for de pågældende datoer

2 kommentarer

Skriv en kommentar

Krævede felter er markeret med *.

*