<< Tilbage

Datofunktioner

Nå man arbejder med php kan man næsten ikke undgå, på et eller andet tidspunkt, at skulle benytte sig af tidsfunktionerne (hvad er klokken? hvilken ugedag er det? hvor langt er der til en bestemt dato?).

Timestamp og time()

Time funktionen giver et såkaldt "Unix timestamp", dvs. det samlede antal sekunder siden 1. Januar 1970 (hvor underligt det end lyder). Et simpelt eksempel:

Kode:
1.
2.
3.
<?php
echo time(); //Skriv antal sekunder siden 1. januar 1970 og til nu ud på skærmen
?>
Resultat:
1513003843

Med andre ord: den giver dags dato. Egentlig kan man jo ikke rigtigt bruge det til noget, brugeren aner jo ikke at tallet repræsenterer dagen idag, men kombineret med nogle af de andre funktioner er det ganske nyttigt (se eksempler nedenfor).

Dato med date()

Denne funktionen kan præsentere et tidspunkt i alverdens formater. Det er som regel date() funktionen man bruger når man gerne vil vise brugeren datoen i et læsbart format.

Et simpelt eksempel:

Kode:
1.
2.
3.
<?php
echo date("d/m/Y"); //Skriv dags dato ud på skærmen
?>
Resultat:
11/12/2017

Læg mærke til parametret her: d/m/Y. Det beskriver hvordan datoen skal se ud. De enkelte bogstaver symbolisere hver et eller andet (f.eks. giver Y årstallet). Nedenstående tabel viser de mest brugte muligheder man har:

Bogstav Beskrivelse Format
j Dag på måneden 1-31
d Dag på måneden (med nuller) 01-31
n Måned på året 1-12
m Måned på året (med nuller) 01-12
N Ugedag (1 mandag, 7 søndag) 1-7
g Timer (12 timers format) 1-12
G Timer (24 timers format) 0-23
h Timer (12 timers med nuller) 01-12
H Timer (24 timers format med nuller) 00-23
y Årstal (2-cifret) 06
Y Årstal (4-cifret) 2006
i Minutter (med nuller) 00-59
s Sekunder (med nuller) 00-59

Date() funktionen kan tage et ekstra parameter, nemlig et timestamp (samme format som beskrevet i afsnittet ovenfor, sekunder siden 1970). Som default viser date() funktionen dags dato (kig på sidste eksempel), men forestil dig at vi eksempelvis har gemt en dato der beskriver hvornår et indlæg i et debatforum er postet, eller hvornår en nyhed er skrevet, så er det selvfølgelig denne dato vi vil vise i stedet. Så bruger vi date() funktionen til at formatere timestampen. Et eksempel på det:

Kode:
1.
2.
3.
4.
<?php
$ts 
time();
echo 
date("d/m/Y"$ts);
?>
Resultat:
11/12/2017

Det giver selvfølgelig ikke så meget mening lige her, da vi lige så godt kunne undlade det sidste parameter. Men i eksemplerne i næste afnsit kan du hvordan det hurtigt bliver brugbart.

Fra dato til timestamp

Vil man gå den anden vej rundt og konvertere et datoformat til timestamp, så kan man bruge funktionen strtotime(), som tager en formateret dato (streng) og returnere et timestamp. Eksempel:

Kode:
1.
2.
3.
4.
5.
<?php
$ts 
strtotime("1 January 2010");
echo 
"Timestamp: " $ts "<br>";
echo 
"Formateret: " date("d/m/Y"$ts);
?>
Resultat:
Timestamp: 1262304000
Formateret: 01/01/2010

Bemærk at vi i linje 2 bruger strtotime() med en formateret dato (10 January 2010) til at finde timestamp'et. Funktioner tager mange forskellige formater (også f.eks. 01/01/2010).

Til at regne frem/tilbage i tiden er strtotime() også rigtig nyttig. Herunder ses et eksempel på hvordan vi lægger 14 dage til dags dato.

Kode:
1.
2.
3.
4.
5.
<?php
$ts 
time(); //Dags dato i timestamp
$ts strtotime("+14 days"$ts); //Læg 14 dage til $ts
echo date("d/m/Y"$ts); //Formater $ts og skriv det ud på skærmen
?>
Resultat:
25/12/2017

I linje 3 lægger vi 14 dage til det timestamp som vi har angivet i parameter 2 ($ts). Lidt flere eksempler på brugen af strtotime() til at regne med tid:

Kode:
1.
2.
3.
4.
5.
6.
7.
8.
<?php
echo date("d/m/Y"strtotime("+30 days")) . "<br>";
echo 
date("d/m/Y"strtotime("Last Saturday")) . "<br>";
echo 
date("d/m/Y"strtotime("-14 Days")) . "<br>";
echo 
date("d/m/Y"strtotime("+3 hours")) . "<br>";
echo 
date("d/m/Y"strtotime("+2 weeks 2 hours 2 seconds")) . "<br>";
echo 
date("d/m/Y"strtotime("Last Month")) . "<br>";
?>
Resultat:
10/01/2018
09/12/2017
27/11/2017
11/12/2017
25/12/2017
11/11/2017

Måned i dansk format

Der findes ingen indbyggede funktioner i php til at lave en dato der inkludere navnet på måneden (f.eks. Januar).

Løsning

Kode:
1.
2.
3.
4.
5.
<?php
$maaneder 
= array("Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Okt","Sep","Nov","Dec",);
$pos date("n")-1//Er det i Marts giver date funktionen 3, trækkes 1 fra har vi positionen i arrayet ovenfor
echo $maaneder[$pos]; //Skriv resultat
?>
Resultat:
Dec

Leder du efter billige usb stik?, så kan du få et Billigt USB stik hos usb.dk

Spørgsmål/forslag/kommentarer rettes til webmaster@phpartikler.dk

Billige USB stik