Avatar billede allandk Nybegynder
11. juni 2013 - 21:05 Der er 29 kommentarer og
1 løsning

Tilføje danske hverdage i løkke med 5 omgange

Jeg har en fin løkke der med udgangspunkt i monday-this-week finder mandag til fredag. Så får jeg skrevet datoerne ud.

...date('Y/m/d', strtotime($year."W".$week_number.$day))

Kan jeg tilføje ugedage - PÅ DANSK?
Avatar billede mediman Nybegynder
11. juni 2013 - 21:09 #1
Avatar billede allandk Nybegynder
11. juni 2013 - 21:16 #2
Jeg har godt læst hans indlæg, men...

Når jeg smider et "l" ind, hvordan kobler jeg det så sammen med et array med danske ugedage?

...date('l Y/m/d', strtotime($year."W".$week_number.$day))

Her er output'et: Monday 2013/06/10
Avatar billede arne_v Ekspert
11. juni 2013 - 21:17 #3
Eksempel:

<?php
date_default_timezone_set('MET');
//setlocale(LC_ALL, 'da_DK'); // *nix
setlocale(LC_ALL, 'dan_DNK'); // windows
$t = time();
echo strftime('%A %d/%m/%Y', $t);
?>
Avatar billede arne_v Ekspert
11. juni 2013 - 21:18 #4
Jeg vil klart fraraade egen definerede arrays.
Avatar billede allandk Nybegynder
11. juni 2013 - 22:18 #5
Hvis jeg skal bruge dit forslag, hvordan kan jeg så sende det igennem en løkke fem omgange, hvor startdatoen er givet?

Jeg bestemmer først den aktuelle eller en valgt uge og ud fra den finder jeg mandagens dato og ud fra den vil gerne have ugens fem hverdage.
Avatar billede allandk Nybegynder
11. juni 2013 - 22:30 #6
Hvis jeg bruger denne:

$year = date('Y');
for($day=1; $day<=5; $day++)
{
    echo "Uge: " . $week_number . " - " . date('l Y/m/d', strtotime($year."W".$week_number.$day))."<br />";
    echo "Uge: " . $week_number . " - " . strftime('%A %Y-%m-%d', $t)."<br />";



}

får jeg fem tirsdage...
Avatar billede arne_v Ekspert
11. juni 2013 - 23:09 #7
Ja.

$t skal vel vaere strtotime($year."W".$week_number.$day)
Avatar billede allandk Nybegynder
11. juni 2013 - 23:11 #8
Ikke forstået.
Avatar billede allandk Nybegynder
11. juni 2013 - 23:42 #9
$year = date('Y');
$t = time();

for($day=1; $day<=5; $day++)
{
    echo "Uge: " . $week_number . " - " . date('l Y/m/d', strtotime($year."W".$week_number.$day))."<br />";
    echo "Uge: " . $week_number . " - " . strftime('%A %Y-%m-%d',$t)."<br />";
    echo "Uge: " . $week_number . " - " . time(strtotime($year."W".$week_number.$day))."<hr />";
}



Uge: 24 - Monday 2013/06/10
Uge: 24 - tirsdag 2013-06-11
Uge: 24 - 1370986887
Avatar billede arne_v Ekspert
12. juni 2013 - 00:32 #10
Proev og forklar paa dansk hvad hver linie goer, saa boer fejlen vaere nem at finde og rette.
Avatar billede allandk Nybegynder
12. juni 2013 - 06:58 #11
Det kan jeg ikke...
Dag = 1, indtil den er = 5; dag = 1 + 1 = 2 + 1 = 3 + 1 = 4 + 1 = 5 = stop

date opererer med datoer
time med tid fra 1970

c'est ce que!
Avatar billede allandk Nybegynder
12. juni 2013 - 15:25 #12
Giver du hint? Gerne med en vognstang...
Avatar billede arne_v Ekspert
12. juni 2013 - 17:12 #13
hvad goer:

strftime('%A %Y-%m-%d',$t)

?
Avatar billede allandk Nybegynder
12. juni 2013 - 17:18 #14
Skriverlokal(dansk)tid('Uge ÅÅÅ-n(måned)-n(dag),xn(som bestemmes udenfor løkken)?
Avatar billede arne_v Ekspert
12. juni 2013 - 17:23 #15
Nej - den udskriver den tid som er i $t i det angivne format.

Og hvilken vaerdi har $t? Og hvilken skulle den have?
Avatar billede allandk Nybegynder
12. juni 2013 - 17:29 #16
$t har tid i sekunder siden 1970, men burde omregnes til 60*60*24*7 eller 365?
Avatar billede arne_v Ekspert
12. juni 2013 - 17:34 #17
$t for vaerdi her:

$t = time();
Avatar billede allandk Nybegynder
12. juni 2013 - 17:39 #18
1371051495 = 43, år?
Avatar billede arne_v Ekspert
12. juni 2013 - 17:41 #19
time() returnerer nu.

strtotime($year."W".$week_number.$day) returnerer formentligt det du vil have.
Avatar billede allandk Nybegynder
12. juni 2013 - 17:48 #20
Beklager. Jeg er helt blank.

Her er de fire løsninger:

    echo "Uge: " . $week_number . " - " . date('l Y/m/d', strtotime($year."W".$week_number.$day))."<br />";
    echo "Uge: " . $week_number . " - " . date(strftime('%A %Y-%m-%d',$t))."<br />";
    echo "Uge: " . $week_number . " - " . time(strtotime($year."W".$week_number.$day))."<br />";
    echo "Uge: " . $week_number . " - " . strtotime($year."W".$week_number.$day)."<hr />";

... og her er outputtet;

Uge: 24 - Monday 2013/06/10
Uge: 24 - 201361212pm5 2013-06-12
Uge: 24 - 1371051972
Uge: 24 - 1370815200

Det ønskede resultat er:

Uge: 24 - Mandag 2013/06/10

... og jeg begriber ikke, hvordan jeg omregne time() til ugedag på dansk.
Avatar billede allandk Nybegynder
12. juni 2013 - 17:49 #21
Mangler lige:

$year = date('Y');
$t = time();

for($day=1; $day<=5; $day++)
{
...
}
Avatar billede arne_v Ekspert
12. juni 2013 - 18:18 #22
echo "Uge: " . $week_number . " - " . strftime('%A %Y-%m-%d',strtotime($year."W".$week_number.$day))."<br />";
Avatar billede allandk Nybegynder
12. juni 2013 - 18:38 #23
Det virker!
Jeg læser...
Avatar billede allandk Nybegynder
12. juni 2013 - 18:45 #24
Jeg kan ikke forklare det. Hvorfor røg $t ud? Og selvom setlocale() er sat, hvordan kommer den så fra fx 1370901600 -> 43,.. år -> dage?
Avatar billede arne_v Ekspert
12. juni 2013 - 19:03 #25
Du kunne ogsaa have brugt:

$t = strtotime($year."W".$week_number.$day);
echo "Uge: " . $week_number . " - " . strftime('%A %Y-%m-%d',$t)."<br />";

det vigtige er ikke om der er en midlertidig variabel $t eller ej - det vigtige er hvilken vaerdi argument nummer 2 til strftime har.
Avatar billede arne_v Ekspert
12. juni 2013 - 19:04 #26
setlocale(LC_ALL, 'dan_DNK');

goer at den skriver tirsdag og ikke Tuesday.
Avatar billede arne_v Ekspert
12. juni 2013 - 19:04 #27
omregningen fra antal sekunder siden 1970 til en rigtig kalendertid er lidt kompleks, men det kan goers og PHP goer det for dig.
Avatar billede allandk Nybegynder
12. juni 2013 - 19:15 #28
Jeg siger i alle fald tak (også for pædagogisk drilleri). Nu virker alt som det skal og jeg endda se, hvordan jeg kan skille datosekvensen ad i det senere forløb.

Tak, tak.
Avatar billede arne_v Ekspert
12. juni 2013 - 19:23 #29
saa smider jeg et svar
Avatar billede allandk Nybegynder
12. juni 2013 - 19:26 #30
En beskeden sum.
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

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