Tid og dato - PHP

Lær at arbejde med tid og dato i PHP med date(), mktime(), setlocale(), strftime() og time()

Introduktion

Tiden går, klokken slår og alt er relativt... også tid og dato i PHP.

Du kan læse mere om funktioner som bruges her på siden på php.net : date, mktime, setlocale, strftime, time, utf8-encode.

Sæt tidszone

Inden vi bruger date() skal vi sætte tidszonen til for eksempel Europe/Copenhagen hvis vi er i Danmark.

Klokken 1

Her er et eksempel på hvordan man viser timer, minutter og sekunder.
date kan du se hvilke bogstaver der betyder hvad i date() funktionen.
Genindlæs siden og se tallene ændre sig.
Serverens ur siger...

02 Timer
19 Minutter
09 Sekunder
Resultatet ovenfor er skabt af følgende kode

Klokken 2

Hvis man kun ønsker og adskille tallene med mellemrum eller kolon så kan man nøjes med at bruge date() én gang.
Serverens ur siger 02 19 09
Serverens ur siger 02:19:09
Resultatet ovenfor er skabt af følgende kode

Dato

Her er det samme bare med dato hvor man typisk bruger skråstreg eller bindestreg til at adskille tallene.
Serverens dato siger 23/9/2017
Serverens dato siger 23-9-2017
Resultatet ovenfor er skabt af følgende kode

Dag og måned på engelsk

Funktionen date() kan vise ugedage-navne og måned-navne på engelsk.
Ugedag : Saturday
Måned : September
Resultatet ovenfor er skabt af følgende kode

Dag og måned på dansk

For at få ugedag og måned på dansk kan vi bruge setlocale() og strftime().
lørdag 18 marts 1978
Saturday March
Resultatet ovenfor er skabt af følgende kode

Men hvad er nu det. Ø i lørdag bliver ikke vist rigtigt.
Det er fordi jeg bruger UTF-8 (som er en multibyte encoding) til at vise min hjemmeside med.

Som det ses påvirkes date() ikke af setlocale(). Det er stadig på engelsk.

Hvis "danish" ikke virker på din computer så kan du prøve med følgende og se om en af strengene bliver godtaget.

Dag og måned på dansk UTF-8

Jeg bruger UTF-8 encoding til at gemme mine filer og til at vise min hjemmeside så derfor kan det være nødvendigt at outputtet fra strftime() bliver konverteret til UTF-8 med utf8_encode() så tegn som ø vises rigtigt.
På dansk : lørdag 19 marts 2033
På spansk : lørdag 19 marts 2033
På finsk : lørdag 19 marts 2033
Resultatet ovenfor er skabt af følgende kode

UNIX epoch og UNIX timestamp

Den 1. Januar 1970 klokken 00:00:00 GMT kaldes UNIX epoch.
Det antal sekunder der er gået fra UNIX epoch til et bestemt tidspunkt kaldes et UNIX timestamp.

time() returner der antal sekunder der er gået siden UNIX epoch hvilket er 1506125949 sekunder da siden blev indlæst.
UNIX epoch : torsdag 01 januar 1970 01:00:00

UNIX timestamp (sekunder siden den 1. Januar 1970 klokken 00:00:00 GMT) : 1506125949
Nu : lørdag 23 september 2017

1000 dage ud i fremtiden : fredag 19 juni 2020
Resultatet ovenfor er skabt af følgende kode

I Danmark bruges tidszonen GMT + 1 time så UNIX epoch vil være 1 time foran hvis ellers tidszonen er sat med ini_set("date.timezone", "Europe/Copenhagen");.

Skriv din kommentar

Spørg mig om hvad som helst
Du kan også skrive direkte til mig på
Stem
Søg
Language

Select English to navigate the website in English. Things like the navigation menu and contact form will be in English, but the main content on each page will not be translated.