|
| Ö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 (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/
| |
|
|