Avatar billede lsskaarup Nybegynder
16. november 2004 - 14:47 Der er 16 kommentarer og
1 løsning

Finde en dags navn ud fra dato og år

Det er sikkert et simpelt svar, men jeg kan ikke lige finde en måde at gøre dette på.

Jeg kunne godt tænke mig, at få dagens navn (mandag, tirsdag o.s.v.) ud fra oplysninger i en db. Der har jeg bl.a. et felt ved navn dato, jeg ved ikke helt hvad format det skal være, så kom endelig med forslag. Jeg har dog selv tænkt på dato, men er det lettere at løse opgaven hvis feltet er et tekstfelt, så go for it. Det var altså dato oplysningen, derudover henter jeg jo selvfølgelig året også via date().

Så hvordan findes navnet på dagen, ud fra et dato felt og et år. Jeg synes ikke det burde være så svært, men har alligevel svært ved at finde ud af det.
Avatar billede henninghabor Nybegynder
16. november 2004 - 14:55 #1
date("l $datofradindatabase");
Avatar billede henninghabor Nybegynder
16. november 2004 - 14:55 #2
Hov,

date("l, $datofradindatabase");
Avatar billede sukos Juniormester
16. november 2004 - 15:02 #3
En måde:

<?php
$day = date("w", time()); // aktuel ugedag, time() kan jo byttes ud med dato fra db

$dk_dage = array(0 => "Søndag", 1 => "Mandag", 2 => "Tirsdag", 3 => "Onsdag", 4 => "Torsdag", 5 => "Fredag", 6 => "lørdag");

echo strtr($day, $dk_dage);
?>
Avatar billede lsskaarup Nybegynder
16. november 2004 - 15:03 #4
Øh, I er det min års-variabel?
Avatar billede sukos Juniormester
16. november 2004 - 15:14 #5
i, giver ugedagen på engelsk.
Mit eks. kunne blot være

<?php
$day = date("w", time());

$dk_dage = array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "lørdag");

echo $dk_dage[$day];
?>

Hvis du gemmer dato i DB som date, kan du bruge strftime() til at få en unixtid
Avatar billede lsskaarup Nybegynder
16. november 2004 - 15:25 #6
Okay, men på php.net står der at "i" returnerer minutter med 0 foran???
Avatar billede sukos Juniormester
16. november 2004 - 15:36 #7
hov, ja, mente l , lille L
Avatar billede lsskaarup Nybegynder
16. november 2004 - 15:59 #8
F..., nu fandt jeg den også. Utroligt som man kan stirre sig blind på noget. Nå men hvis den også får en dato samtidig så kan den returnere navnet på lige den dag?
Avatar billede lsskaarup Nybegynder
16. november 2004 - 20:44 #9
Godt, jeg har nu bakset lidt rundt med den og den fungere nu efter planen. Det eneste er at jeg gerne vil have dagen og måned på dansk, men hvis der ikke er en funktion som gør det, vil jeg lave det via en if. Så tak for hjælpen til jer begge. Henninghabor var dog den første.
Avatar billede lsskaarup Nybegynder
16. november 2004 - 21:05 #10
Okay, det kan være I lige kan hjælpe mig med dette.

$dage = mysql_query("SELECT * FROM RS_Aabningstider_Jul");
while ($dag = mysql_fetch_array($dage)) {
setlocale(LC_ALL, 'da_DA');
$dagen = substr($dag[dato], 0, 2);
$måned = substr($dag[dato], 3, 2);
$tiden = mktime(0, 0, 0, $måned, $dagen, date(Y));
$dagNavn = date("l", $tiden);
$dato = date("j. F Y", $tiden);
.
.
.
}

Men setLocale sætte ikke dansk på $dagNavn og $dato, hvorfor?
Avatar billede hmortensen Nybegynder
16. november 2004 - 21:14 #11
Et kig i manualen ville afsløre at du skal bruge strftime()
http://dk2.php.net/manual/da/function.strftime.php

Og det kan godt være at du skal bruge en anen local. for BSD systemer:
setlocale(LC_TIME, 'da_DK.ISO8859-1');
Avatar billede lsskaarup Nybegynder
16. november 2004 - 22:30 #12
Det er netop det der undre mig. For hverken med en anden local eller med strftime() bliver det ændret.

Men hvis jeg bare for at teste skriver date() ud, så omformer den det godt nok også uden strftime. Kan det være fordi $dagNavn og $dato ikke er "ægte" datoer. Det er jo nogle jeg laver ud fra strings i db'en?
Avatar billede hmortensen Nybegynder
16. november 2004 - 22:35 #13
setlocale(LC_TIME, "da_DK.ISO8859-1", "da", "dan", "da_DK", "danish");
$dagNavn = strftime("%A", $tiden);
Avatar billede lsskaarup Nybegynder
16. november 2004 - 22:46 #14
Så kommer fejlen "wrong parameter count.." ved setlocale
Avatar billede lsskaarup Nybegynder
16. november 2004 - 22:51 #15
Okay, den virker vist nok når jeg kun bruger da_DK.ISO8859-1, tjekker lige
Avatar billede hmortensen Nybegynder
16. november 2004 - 22:51 #16
Så prøv en af gangen (en af dem burde virke):
setlocale(LC_TIME, "da_DK.ISO8859-1");
setlocale(LC_TIME, "da");
setlocale(LC_TIME, "dan");
setlocale(LC_TIME, "da_DK");
setlocale(LC_TIME, "danish");
Avatar billede lsskaarup Nybegynder
16. november 2004 - 22:55 #17
Jeps, så var den der. Takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester