Avatar billede prop46 Nybegynder
15. april 2007 - 14:41 Der er 17 kommentarer og
1 løsning

første og sidste dag i uge

Jeg har fået denne kode her på eksperten i et andet sprøgsmål, men jeg har aldrig rigtig fået den til at virke, så nu prøver jeg lige igen.

Det jeg skal er at finde unix timestamp for første og sidste dag i ugen for at kunne lave en mysql query. MANDAG skal være første dag i ugen:

$today = time();
$weekday = strftime( "%w", $today );
$beginweek = strtotime( "-" . $weekday . " DAY", $today );
$endweek = strtotime( "+" . 7 - $weekday . " DAY", $today );
$maned = strftime( "%B", $today );
$ar = strftime( "%Y", $today );

$hent_kbhuge = "SELECT * FROM kalender WHERE sted='kobenhavn' AND dato BETWEEN $beginweek AND $endweek ORDER BY dato ASC";

Jeg VED at min $weekday bør være
$weekday = strftime("%u", $today); og ikke
$weekday = strftime("%w", $today);

hvis mandag og ikke søndag skal være dag 1, men jeg får intet output af ("%u", $today)... irriterer mig voldsomt :0)

Nogen der kan hjælpe?
Avatar billede johan.o Nybegynder
15. april 2007 - 15:29 #1
Hmm..jeg ved ikke hvad den kode du har fået gør men hvis jeg skulle bruge sidste Mandag, og næste Søndag, tror jeg jeg ville gøre sådan her..

<?php

$today=strftime("%u");
$first=mktime(0, 0, 0, date("m"), date("d")-($today-1), date("Y"));
$last=mktime(0, 0, 0, date("m"), date("d")+7-$today, date("Y"));

echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $first)."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $last)."</pre>";

?>

..men så skal du være opmærksom på at der jo mangler hele søndagen !, perioden går fra midnat mellem Søndag og Mandag til midnat mellem Lørdag og Søndag, hvis du vil have den til at gå til midnat mellem Søndag og Mandag skal det nok se sådan her ud..

<?php

$today=strftime("%u")-1;
$first=mktime(0, 0, 0, date("m"), date("d")-($today), date("Y"));
$last=mktime(0, 0, 0, date("m"), date("d")+7-$today, date("Y"));

echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $first)."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $last)."</pre>";

?>

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 15:36 #2
Det giver
mandag 16 april 2007 00:00:00
mandag 23 april 2007 00:00:00

Det jeg skal bruge er mandag og søndag i denne uge.. altså
mandag 9 april
søndag 15 april
Avatar billede prop46 Nybegynder
15. april 2007 - 15:40 #3
Altså din sidste forslag :0)
Avatar billede johan.o Nybegynder
15. april 2007 - 15:40 #4
Hm..mærkeligt når jeg tester får jeg..

Monday 09 April 2007 00:00:00
Sunday 15 April 2007 00:00:00

På den første, og..

Monday 09 April 2007 00:00:00
Monday 16 April 2007 00:00:00

På den sidste...???

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 15:43 #5
hm.... underligt...
Avatar billede johan.o Nybegynder
15. april 2007 - 15:44 #6
Prøv denne her...

<?php

$today=strftime("%u");

echo "<pre>".$today."</pre>";

$first=mktime(0, 0, 0, date("m"), date("d")-($today-1), date("Y"));
$last=mktime(0, 0, 0, date("m"), date("d")+7-$today, date("Y"));

echo "<pre>".strftime("%A %d %B %Y %H:%M:%S")."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $first)."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $last)."</pre>";

?>

Hvad får du så af output ?

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 15:47 #7
søndag 15 april 2007 15:48:04
mandag 16 april 2007 00:00:00
søndag 22 april 2007 00:00:00
Avatar billede johan.o Nybegynder
15. april 2007 - 15:48 #8
Tester du hjemme, eller hos en udbyder, og hvis det er derhjemme er det så på en windows platform ?

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 15:50 #9
hos en udbyder.. og jeg ved faktisk ikke hvilken platform... men det kan jeg vel finde ud af...
Avatar billede johan.o Nybegynder
15. april 2007 - 15:52 #10
Nej det er ikke nødvendigt, det er højst sandsynligt noget Unix noget :)

Det er som du ganske rigtigt skriver strftime("%u") der ikke returnere noget som helst....???

...tænker...

Mvh. Johan
Avatar billede johan.o Nybegynder
15. april 2007 - 15:57 #11
Ikke særligt kønt, men prøv dette...

<?php

$today=strftime("%w");
if($today==0) { $today=7; }

echo "<pre>".$today."</pre>";

$first=mktime(0, 0, 0, date("m"), date("d")-($today-1), date("Y"));
$last=mktime(0, 0, 0, date("m"), date("d")+7-$today, date("Y"));

echo "<pre>".strftime("%A %d %B %Y %H:%M:%S")."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $first)."</pre>";
echo "<pre>".strftime("%A %d %B %Y %H:%M:%S", $last)."</pre>";

?>

Bliver nød til at 'forlade' dig et øjeblik :)

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 16:02 #12
7
søndag 15 april 2007 16:02:16
mandag 09 april 2007 00:00:00
søndag 15 april 2007 00:00:00

Okay... der kom mandag og søndag... kigger lige.. skriver hvis jeg ikke hitter det :0)
Avatar billede prop46 Nybegynder
15. april 2007 - 16:08 #13
Super :0) Kønt eller ej, læg et svar. Tak for hjælpen.
Avatar billede morhan Novice
15. april 2007 - 16:09 #14
$monday = strtotime("last Monday", strtotime("tomorrow"));
$sunday = strtotime("next Sunday", strtotime("yesterday")) + 23*3600+59*60+59;

echo date('l dS \of F Y h:i:s A', $monday)."<br>";
echo date('l dS \of F Y h:i:s A', $sunday);
Avatar billede johan.o Nybegynder
15. april 2007 - 17:35 #15
Det kommer her :)

Klippet fra php.net (strftime)...

Not all conversion specifiers may be supported by your C library, in which case they will not be supported by PHP's strftime()

Det kunne da være nyttigt at vide hvilken platform din udbyder 'kører' ?

Mvh. Johan
Avatar billede prop46 Nybegynder
15. april 2007 - 20:37 #16
Det kunne det ja :0)
Avatar billede prop46 Nybegynder
16. april 2007 - 08:01 #17
Det er en windows platform.... Så det burde jo virke med den første kode du postede...
Avatar billede johan.o Nybegynder
16. april 2007 - 13:11 #18
En windows platform..okay..ja det var egentligt mærkeligt..??..men nu er jeg ikke vildt stærk i C library osv..men der 'mangler' åbenbart noget der..sjovt..:)

Mvh. Johan
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