/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Ömforme tekststreng til læsbar dato ?
Fra : Jakob Munck


Dato : 28-04-09 15:09

Når jeg udskriver min variabel sådan

<?
echo $dato
?>

Så skrives der: "05042009"

Men jeg vil godt have udskriften (datoen) til at se sådan ud: "05-04-2009"

Hvordan er det lige at jeg får omformet en sådan tekststreng, så den ligner
en rigtig dato?


v.h.
Jakob Munck



 
 
Dan Storm (28-04-2009)
Kommentar
Fra : Dan Storm


Dato : 28-04-09 15:26

Jakob Munck skrev:
> Hvordan er det lige at jeg får omformet en sådan tekststreng, så den ligner
> en rigtig dato?

Hvad har du selv prøvet?

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Jakob Munck (28-04-2009)
Kommentar
Fra : Jakob Munck


Dato : 28-04-09 17:14

>
> Hvad har du selv prøvet?
>

Jeg har prøvet dette, og det virker udmærket.

<?
echo substr($dato, 0, 2);
echo "-";
echo substr($dato, 2, 2);
echo "-";
echo substr($dato, -4);
?>:

Men måske kunne det gøres mere elegant?

v.h.
Jakob



Dan Storm (28-04-2009)
Kommentar
Fra : Dan Storm


Dato : 28-04-09 17:24

Jakob Munck skrev:
> <?
> echo substr($dato, 0, 2);
> echo "-";
> echo substr($dato, 2, 2);
> echo "-";
> echo substr($dato, -4);
> ?>:
>
> Men måske kunne det gøres mere elegant?

Ja, kønt er det ikke - det vigtigste her er dog at det virker!
På den måde har du mulighed for at forskønne det. Ligesom Philip er inde på.

Der er ingen grund til ikke at lægge din reformaterede dato ind i en
variabel - det kunne jo være den skulle behandles på anden vis også.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Philip Nunnegaard (28-04-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 28-04-09 18:07

Dan Storm skrev:

> Der er ingen grund til ikke at lægge din reformaterede dato ind i en
> variabel - det kunne jo være den skulle behandles på anden vis også.

Jeg går ud fra at du tænker noget i retning af et timestamp, som så
reformateres alt efter behovet, når det skal vises på siden.

Noget a la:
date('d-m-Y',$tidsstempel)


--
Philip - http://chartbase.dk

Philip Nunnegaard (28-04-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 28-04-09 17:05

Jakob Munck skrev:

> Hvordan er det lige at jeg får omformet en sådan tekststreng, så den ligner
> en rigtig dato?

Hvordan har du overhovedet defineret $dato?
Hvis jeg vil trække en dato ud via php, får jeg gerne noget a la 2009-04-28.

Din "05042009" kan vel klares sådan:

$nydato = substr($dato,0,2)."-".substr($dato,2,2)."-".substr($dato,4,4);
echo $nydato; // udskriver "05-04-2009"

--
Philip - http://chartbase.dk

Jakob Munck (28-04-2009)
Kommentar
Fra : Jakob Munck


Dato : 28-04-09 17:24

>
> $nydato = substr($dato,0,2)."-".substr($dato,2,2)."-".substr($dato,4,4);
> echo $nydato; // udskriver "05-04-2009"
>

Det var lige hvad jeg søgte efter. Og det ser lidt mere elegant ud end min
egen kode. Mange tak for det.

v.h.
Jakob



Philip Nunnegaard (28-04-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 28-04-09 18:24

Jakob Munck skrev:

> Det var lige hvad jeg søgte efter. Og det ser lidt mere elegant ud end min
> egen kode. Mange tak for det.

OK! Det å tæt op af det du selv havde forsøgt.

Normalt har jeg en funktion der kan kaldes fra alle filer, og som hedder
danskdato().

$dato = $row["dato"];
danskdato();
echo $nydato;

I den funktion har jeg også sørget for at den udskriver noget a la
"Tirsdag d. 28. april 2009 kl. 19:05". - Eller lige i dette tilfælde: "I
dag kl. 19:05".

Funktionen indeholder så også et array med de danske ugedage og måneder.

--
Philip - http://chartbase.dk

Martin (29-04-2009)
Kommentar
Fra : Martin


Dato : 29-04-09 05:36

Philip Nunnegaard wrote:
> Jakob Munck skrev:
>
>> Det var lige hvad jeg søgte efter. Og det ser lidt mere elegant ud end
>> min egen kode. Mange tak for det.
>
> OK! Det å tæt op af det du selv havde forsøgt.
>
> Normalt har jeg en funktion der kan kaldes fra alle filer, og som hedder
> danskdato().
>
> $dato = $row["dato"];
> danskdato();
> echo $nydato;

setlocale(LC_ALL, 'da-DK');
echo date('l d F', $row['dato']);

Altid dejligt at bruge locale, så skal man bare ændre det 1 sted, og
hvis man fx. også vil lave RSS feeds (som skal overholde de gængse
regler for dato angivningen der)

>
> I den funktion har jeg også sørget for at den udskriver noget a la
> "Tirsdag d. 28. april 2009 kl. 19:05". - Eller lige i dette tilfælde: "I
> dag kl. 19:05".
>
> Funktionen indeholder så også et array med de danske ugedage og måneder.
>

Philip Nunnegaard (29-04-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 29-04-09 06:20

Martin skrev:

> setlocale(LC_ALL, 'da-DK');
> echo date('l d F', $row['dato']);
>
> Altid dejligt at bruge locale, så skal man bare ændre det 1 sted, og
> hvis man fx. også vil lave RSS feeds (som skal overholde de gængse
> regler for dato angivningen der)

Såfremt det altså virker.
Det gør det ikke hos mig. Her giver den "Tuesday 28 April"
Min hjemmelavede datofunktion virker til gengæld hver gang.

--
Philip - http://chartbase.dk

Martin (29-04-2009)
Kommentar
Fra : Martin


Dato : 29-04-09 22:42

Philip Nunnegaard wrote:
> Martin skrev:
>
>> setlocale(LC_ALL, 'da-DK');
>> echo date('l d F', $row['dato']);
>>
>> Altid dejligt at bruge locale, så skal man bare ændre det 1 sted, og
>> hvis man fx. også vil lave RSS feeds (som skal overholde de gængse
>> regler for dato angivningen der)
>
> Såfremt det altså virker.
> Det gør det ikke hos mig. Her giver den "Tuesday 28 April"
> Min hjemmelavede datofunktion virker til gengæld hver gang.
>

strftime er svaret... bare en tanketorsk fra mig af...
Hvad gør du så når du vil have flere sprog, så vil du manuelt smide det
et nyt array ind i din funktion?

Philip Nunnegaard (30-04-2009)
Kommentar
Fra : Philip Nunnegaard


Dato : 30-04-09 05:39

Martin skrev:

> strftime er svaret... bare en tanketorsk fra mig af...

Ja, det så jeg af Bertels svar.

> Hvad gør du så når du vil have flere sprog, så vil du manuelt smide det
> et nyt array ind i din funktion?

Har en anden funktionder hedder noget a la endato()
- eller som på de fleste sider: Jeg har det kun på dansk.

Fidusen for mig er at jeg her kan vise datoen præcist som jeg ønsker det
(f.eks. den med "i dag" osv.).

--
Philip - http://chartbase.dk

Bertel Lund Hansen (29-04-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 29-04-09 13:22

Martin skrev:

> setlocale(LC_ALL, 'da-DK');
> echo date('l d F', $row['dato']);

Udskrift:

   Thursday 01 January

> Altid dejligt at bruge locale

Bare synd at date() er revnende ligeglad med den indstilling.

Brug strftime() til udskrift af datoer der skal respektere
locale-indstillingen.

http://dk2.php.net/manual/en/function.strftime.php

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Martin (29-04-2009)
Kommentar
Fra : Martin


Dato : 29-04-09 22:41

Bertel Lund Hansen wrote:
> Martin skrev:
>
>> setlocale(LC_ALL, 'da-DK');
>> echo date('l d F', $row['dato']);
>
> Udskrift:
>
>    Thursday 01 January
>
>> Altid dejligt at bruge locale
>
> Bare synd at date() er revnende ligeglad med den indstilling.
>
> Brug strftime() til udskrift af datoer der skal respektere
> locale-indstillingen.
>
> http://dk2.php.net/manual/en/function.strftime.php
>

Ja selvfølgelig skal man bruge strftime, ved ikke lige hvad jeg tænkte,
eller rettere ikke tænkte da jeg lige lavede eksemplet :)

Bertel Lund Hansen (29-04-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 29-04-09 22:43

Martin skrev:

> Ja selvfølgelig skal man bruge strftime, ved ikke lige hvad jeg tænkte,
> eller rettere ikke tænkte da jeg lige lavede eksemplet :)

Næ, men det er da også pløkåndssvagt at date() holder sig for fin
til at aflæse locale.

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste