Tid, dag, dato osv

Tags:    php
Skrevet af Bruger #6283 @ 06.09.2004

Lidt om tid, dag, dato osv - Absolut begyndere



-----------------------------------------------------
Forord
Denne artikkel er beregnet til absolut begyndere som ønsker at indsætte dags dato, tid eller lign på deres side.

Den er forsøgt skrevet til begyndere og er derfor ikke velegnet hvis man har erfaring.

Det er meningen at folk uden erfaring kan starte let og stille og roligt her, lige efter de har lært det allermest grundlæggende.

Men den kan også bruges af folk der skal friske deres viden op.

Nogle eksempler er lavet mere avanceret end nødvendigt hvis de på den måde bliver mere overskuelige for brugeren.

------------------------------------------------------

Selve artiklen
Jeg vil her vise hvordan man får tid, dato osv indsat på ens sider. Jeg vil i den forbindelse også gå ind og se på hvordan vi får den til at skrive dagene og månederne på dansk istedet for engelsk.

Vi starter her med at introducere funktionen date(). Denne bruges til det meste i denne artikel.

Listen
Date() kan kaldes med en masse funktioner, her er nogle eksempler:
a = erstattes af am eller pm
A = erstattes af AM eller PM
d = dag i måned f.eks. 04 (to cifre)
j = dag i måned f.eks. 4 (et cifre)
w = Dagens nummer (søndag=0 , mandag=1, tirsdag=2 osv)
z = Dagens nummer i dette år (0-365)
D = Dag i denne uge i tre bogstaver (bemærk engelsk)
i = dag i denne uge som fuldt navn (bemærk engelsk)
m = Månedens nummer f.eks. 04 (to cifre)
n = Månedens nummer (1 cifre)
M = Månedens navn 3 bogstaver engelsk
F = Månedens fulde navn engelsk
t = Antal dage i måneden dvs 28 - 31
Y = Årstal i 4 cifre
y = Årstal 2 cifre
L = 1 hvis skudår - 0 hvis ikke
h = Timetal 01-12 (2 cifre)
H = Timetal 00-24 (2 cifre)
g = Timetal 1-12 (1 cifre)
G = Timetal 1-24 (1 cifre)
i = Minuttal (00 - 59)
s = Sekundtal (00-59)
S = engelsk endelse på tal (th og td)

Eksemplerne
Lad os springe direkte ud i et eksempel:
Fold kodeboks ind/udKode 

Som du kan se udskrives datoen i dag her.
echo = bruges til at udskrive med i php
$dato = Variabel den gemmes i (kan evt undlades)
date() = Funktionen date
d/m-Y = formatet - se listen ovenfor.
d = dag i måned f.eks. 04 (to cifre)
m = Månedens nummer f.eks. 04 (to cifre)
Y = Årstal i 4 cifre

Vi tager lige et eksempel til inden vi går vider med at få det på dansk:
Fold kodeboks ind/udKode 

Udskriver antal dage i denne måned.

Den kan evt bruges til at regne med således:
Fold kodeboks ind/udKode 

Her finder vi først antal dage i denne måned
Så finder vi datoen i dag.
Herefter udskriver vi dage i måned - dato og får antal dage tilbage.

Eksempler på dansk oversættelse
Det var så det grundlæggende.

Nu skal vi igang med et eksempelhvor vi får udskrevet dagens navn på dansk. Vi benytter ikke "l" som henter dagens navn på engelsk, men derimod "w" som henter dagens nummer. Husk at 0 = søndag.
Fold kodeboks ind/udKode 

Her henter vi først numret på dagen.
Så laver vi et array hvor dagenes navne står i. Læg mærke til at 0 er som søndag.
Tilsidst udskriver vi arrayet og vælger at den skal vælge $dag som parameter. Og $dag er jo numret den hentede øverst.

På nøjagtig samme måde kan det gøres med måned:
Fold kodeboks ind/udKode 

Sådan gøres det.

Sammensæt det
Herunder kan du så se hvordan man kan sammensætte flere ting. I følgende eksempel sammensætter vi dag og dato så det blir f.eks. fredag d. 13/07-2005
Fold kodeboks ind/udKode 

Den sidste sætning er lavet sådan efter echo:
Først henter vi navnet på dagen
Så bruger vi et . til at binde det hele sammen til en sætning.
Så skriver "" tegn med d. imellem som udskriver d. (fredag d. 12/12-2005)
Så et . igen til at binde det sammen
Og til sidst hentes datoen.

Så skulle du efterhånden være helt inde i tid, dato osv.

I mere avanceret eksempler vil man gå ind og regne med unix epoch som er en måde at måle tid på. Denne måler tiden i sek siden 1 jan 1970.
Kan hentes med U i date() sæningen. Man kan også få den til at returnere unix epoch tallet fra en given dato med funktionen mktime().

Men alt dette kommer artiklen ikke til at handle om da det jo er en absolut begynder artikel.

Men da jeg ved nogle jo er interesseret vil jeg lige skrive det. Så kan de jo søge på nogle af ordene (unix epoch, date("U" eller mktime på php.net ved funktioner)

Jeg håber du kan lide artiklen og hører gerne lidt respons.

Artiklen blir gerne tilpasset undervejs hvis dette blir nødvendigt.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (13)

User
Bruger #3530 @ 06.09.04 22:02
Denne artikel kunne lige så godt have været et link til www.php.net/date!
User
Bruger #1425 @ 07.09.04 10:50
Det er korrekt, men der er desværre en del nybegyndere som ikke kender til php.net/whatever eller bliver afskrækket af at alt er på engelsk. Derfor blev artiklen godkendt alligevel, omend til et lavt antal point.
User
Bruger #5426 @ 07.09.04 16:41
Jeg har efterhånden arbejdet med PHP et stykke tid, og vil give KasperTech ret i det han siger, men jeg synes alligevel artikleren fortjener ros, for den er skrevet i et godt sprog, og er nem at forstå.
Selv kendte jeg heller ikke alle de funktioner man kunne bruge, når man arbejdede med tid, så den hjalp også mig.

User
Bruger #2654 @ 07.09.04 20:18
Der er vist kommet en tryk fejl. I teksten står der:
---
Vi tager lige et eksempel til inden vi går vider med at få det på dansk:
<?php
echo $dage_i_maaned = date("G");
?>
Udskriver antal dage i denne måned.
---
Listen, og php.net, siger at Date("G") giver timetallet. Elers en ok artikel
User
Bruger #4196 @ 08.09.04 18:07
Der skal bruges j
User
Bruger #6283 @ 10.09.04 00:10
Artikelen er skrevet til absolut nybegyndere i et let sprog som (forhåbentlig) er til at forstå. Den skal give folk hjælp til at prøve at komme igang, imodsætning til php.net som kan virke uoverskuelig og svær at forstå for nybegyndere. Den er slet ikke beregnet til folk der i forvejen er ørne til det.
Tak for kommentarene so far, og godt mht at I fik rettet fejlen :)
User
Bruger #5601 @ 21.09.04 10:40
Faktisk en udemærket artikel... Lærte selv noget selvom jeg har arbejdet med php i snart et halvt år... Alle de funktioner der er til date anede jeg ikke noget om... ;o)

Thumbs up herfra
User
Bruger #2737 @ 28.09.04 16:16
Et par andre funktioner der er værd at kigge på, hvis man vil have tiderne vist på ens lokale sprog, er set_locale() og strftime(). Så behøver man ikke selv at oversætte.

http://www.php.net/set_locale
http://www.php.net/strftime
User
Bruger #5075 @ 12.10.04 18:22
Synes du bruger date lige lovligt overflødigt, for at tage et eksempel:
---------------------------------------
<?
$dag = date("w");

$navndag[0] = "søndag";
$navndag[1] = "mandag";
$navndag[2] = "tirsdag";
$navndag[3] = "onsdag";
$navndag[4] = "torsdag";
$navndag[5] = "fredag";
$navndag[6] = "lørdag";

echo $navndag[$dag];
?>
---------------------------------------

Denne brug af date er komplet unødvendig, det kræver langt mere end en simpel omgang:
---------------------------------------
<?php
setlocale(LC_ALL, "Danish");
print ucfirst(strftime("%A"));
---------------------------------------
som vil returnere Mandag, Tirsdag etc - alt efter hvilken dag det er.
User
Bruger #4304 @ 20.10.04 11:53
En ting man skal vide ved strftime, er at det ikke er alle de dokumenterede funktioner der virker under windows ... Jeg løb ind i den her %e som skulle give en dato uden 0 foran (den 08. oktober, skulle være den 8. oktober) ... Men dette kan man klare ved %#d som fjerner 0. Den eneste forskel er (ret mig her hvis jeg tager fejl) at ved brug af %#d sniger der sig et uønsket mellemrum ind.
User
Bruger #6731 @ 13.05.05 07:06
Nyttig til nyheds-systemer
User
Bruger #10006 @ 18.08.06 22:56
Meget nyttigt :D
User
Bruger #10980 @ 23.12.06 10:00
Hej, jeg er ikke lige den mest øvede inden for php'en, men jeg må sige at jeg lærte lidt mere om sproget, især det med at man kan bruge en array på den måde.

men der ved dagene i arrayen, skal man ikke bruge ++ forat få det rigtige resultat?

Mvh.
Jacob
Du skal være logget ind for at skrive en kommentar.
t