Kan iemand mij helpen met een datumfunctie onder PHP. Ik heb een weeknummer
en wil vervolgens weten wat de datum (of direct de timestamp) is van de
eerste maandag in die week? Bij voorbaat dank.
jelle
Likes: 0
Kan iemand mij helpen met een datumfunctie onder PHP. Ik heb een weeknummer
en wil vervolgens weten wat de datum (of direct de timestamp) is van de
eerste maandag in die week? Bij voorbaat dank.
jelle
"Jelle Sjollema" <jelles@spambl_xs4all.nl>, you wrote on Sun, 22 Aug
2004 13:23:35 +0200:
>Kan iemand mij helpen met een datumfunctie onder PHP. Ik heb een weeknummer
>en wil vervolgens weten wat de datum (of direct de timestamp) is van de
>eerste maandag in die week? Bij voorbaat dank.
Het lijkt me dat je eerst moet uitvinden wanneer de eerste week van
het jaar was. Als je dat weet, kun je de timestamp opvragen van de
nulde seconde van de eerste dag van die week, en daar
((weeknummer - 1) × seconden per week)
bij optellen. Dan heb je de timestamp van de maandag van de week die
je zoekt.
Nodig:
- date() (met 'W'-optie om een weeknummer op te vragen)
- time() (om de timestamp van nu op te vragen)
- strtotime() (om de timestamp van andere tijdstippen te raden)
Het viel me ooit op dat verschillende kalendermakers verschillende
systemen lijken te gebruiken voor het bepalen van weeknummers. PHP
4.1.x gebruikt ISO-8601, dat blijkbaar onder andere bepaalt dat
maandag de eerste dag van de week is. (Barbaren!)
--
branko collin
collin@xs4all.nl
Branko Collin <collin@xs4all.nl>:
> "Jelle Sjollema" <jelles@spambl_xs4all.nl>, you wrote on Sun, 22 Aug
> 2004 13:23:35 +0200:
>
>>Kan iemand mij helpen met een datumfunctie onder PHP. Ik heb een
>>weeknummer en wil vervolgens weten wat de datum (of direct de timestamp)
>>is van de eerste maandag in die week? Bij voorbaat dank.
>
> Het lijkt me dat je eerst moet uitvinden wanneer de eerste week van het
> jaar was. Als je dat weet, kun je de timestamp opvragen van de nulde
> seconde van de eerste dag van die week, en daar
>
> ((weeknummer - 1) × seconden per week)
>
> bij optellen. Dan heb je de timestamp van de maandag van de week die je
> zoekt.
En dan maar hopen dat je geen problemen gaat krijgen met schrikkeljaren en
zomer- of wintertijd...
--
robert
> Kan iemand mij helpen met een datumfunctie onder PHP. Ik heb een
weeknummer
> en wil vervolgens weten wat de datum (of direct de timestamp) is van de
> eerste maandag in die week? Bij voorbaat dank.
<?php
echo gmstrftime ("%A %d-%b-%y %T %Z", strtotime("1 January 2004 + 20
weeks"));
?>
Het gaat dus om het stukje strtotime, maar die doet idd een timestamp. Je
kan de 1 January string qua jaartal opbouwen met huidige jaar...
> <?php
> echo gmstrftime ("%A %d-%b-%y %T %Z", strtotime("1 January 2004 + 20
> weeks"));
> ?>
Ik las het fout, je kan met de verkregen timestamp wel snel de maandag
uitrekenen door strftime("%u", $mydate) te doen, die geeft de dag van de
week (1 = maandag, heb je dus 3 dan moet je er nog 4 dagen bijoptellen om op
de 1e maandag van die week te komen. Maar dat lukt je wel, met bovenstaande
hoef je geen zorgen te maken over schrikkeljaren e.d.
"Onno"
> Ik las het fout, je kan met de verkregen timestamp wel snel de maandag
> uitrekenen door strftime("%u", $mydate) te doen, die geeft de dag van de
> week (1 = maandag, heb je dus 3 dan moet je er nog 4 dagen bijoptellen om
op
> de 1e maandag van die week te komen. Maar dat lukt je wel, met
bovenstaande
> hoef je geen zorgen te maken over schrikkeljaren e.d.
Precies, door de oplossingen van jou en Branko ben ik zelf op de volgende
oplossing gekomen:
$t_first_day=mktime(0, 0, 0, $month, 1, $year);
$first_week = date("W",$t_first_day);
$first_day=date("w",$t_first_day);
if($first_day == 0)
{
$t_first_monday = mktime(0, 0, 0, $month, $first_day + 2, $year);
}
if($first_day>1)
{
$t_first_monday = mktime(0, 0, 0, $month, 2 - $first_day, $year);
}
if($first_day == 1)
{
$t_first_monday = mktime(0, 0, 0, $month, $first_day, $year);
}
$first_monday = date("D d m Y",$t_first_monday);
echo $first_monday;
Hier komt in ieder geval steeds de eerste maandag uit, alhoewel ik niet snap
waarom bij de optie $first_day == 0 er twee moet optellen, maar het werkt.
Bedankt.
jelle (gaat nu hetzelfde voor de laatste vrijdag van de maand bedenken)
"Jelle Sjollema" <jelles@spambl_xs4all.nl> wrote in
news:41288226$0$48933$e4fe514c@news.xs4all.nl:
Ik dacht aan een of ander dagboek, over de ervaring van iemand met 8 dagen
PHP :-D.
--
John Voorbeeldscripts in Perl:http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
John Bokma:
>Jelle Sjollema:
>Ik dacht aan een of ander dagboek, over de ervaring van iemand met 8 dagen
>PHP :-D.
Ik las eerst "zonder PHP"
^
.... en begreep niet wat het probleem kon zijn :-)
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
"Rene Pijlman"
> Ik las eerst "zonder PHP"
> ^
> ... en begreep niet wat het probleem kon zijn :-)
Het probleem bleek achteraf ook wel mee te vallen
jelle (heeft gewoon een hekel aan tijd- en datumfuncties)
Jelle Sjollema:
>jelle (heeft gewoon een hekel aan tijd- en datumfuncties)
Me too. In applicaties, database drivers e.d. die datum/tijd-formaten
moeten converteren en manipuleren is dit vaak goed voor 25% van de bugs.
Wat een narigheid.
Het wordt tijd voor een wereldregering, die de wereld indeelt in 10
tijdzones, het jaar in 10 maanden, de maand in 10 dagen, de dag in 10 uur,
het uur in 10 minuten (dit alles in één verplichte universele decimale
notatie) ... en... DE ZOMERTIJD AFSCHAFT!
Dan houden we alleen nog dat gezeur van webservers in een bepaalde
tijdzone, met gebruikers in alle andere tijdzones.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman [on Mon, 23 Aug 2004 00:02:38 +0200] wrote:
> Het wordt tijd voor een wereldregering, die de wereld indeelt in 10
> tijdzones, het jaar in 10 maanden, de maand in 10 dagen, de dag in 10 uur,
> het uur in 10 minuten (dit alles in één verplichte universele decimale
> notatie) ... en...
Ik zag vandaag de 100 meter hardgelopen worden in een tijd onder de 10
seconden.
Vraagje: wat gebeurt er met al die atletiek-records als jouw hartewens in
vervulling gaat? Converteren of vergeten?
--
Erick
Erick T. Barkhuis:
>Rene Pijlman:
>> Het wordt tijd voor een wereldregering, die de wereld indeelt in 10
>> tijdzones, het jaar in 10 maanden, de maand in 10 dagen, de dag in 10 uur,
>> het uur in 10 minuten (dit alles in één verplichte universele decimale
>> notatie) ... en...
>
>Ik zag vandaag de 100 meter hardgelopen worden in een tijd onder de 10
>seconden.
>Vraagje: wat gebeurt er met al die atletiek-records als jouw hartewens in
>vervulling gaat? Converteren of vergeten?
De lengte van een meter wordt zodanig aangepast dat de records geldig
blijven.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman [on Mon, 23 Aug 2004 00:09:40 +0200] wrote:
> Erick T. Barkhuis:
> >Rene Pijlman:
> >> [...wil decimale tijdsindeling...]
> >Vraagje: wat gebeurt er met al die atletiek-records als jouw hartewens in
> >vervulling gaat? Converteren of vergeten?
>
> De lengte van een meter wordt zodanig aangepast dat de records geldig
> blijven.
Ik was er al bang voor dat de ver- en hoogspringers, alsmede de
speervangers en discushappers de klos zouden worden...
--
Erick
"Whether you think you can or you can't - you're right!"
Erick T. Barkhuis:
>Rene Pijlman:
>> Erick T. Barkhuis:
>> >Rene Pijlman:
>> >> [...wil decimale tijdsindeling...]
>
>> >Vraagje: wat gebeurt er met al die atletiek-records als jouw hartewens in
>> >vervulling gaat? Converteren of vergeten?
>>
>> De lengte van een meter wordt zodanig aangepast dat de records geldig
>> blijven.
>
>Ik was er al bang voor dat de ver- en hoogspringers, alsmede de
>speervangers en discushappers de klos zouden worden...
De golfers en sjeudeboelers zullen daarentegen zeer tevreden zijn.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote in
news:1n5ii05p7dbb1935cp917kc5ahkf1l1efi@4ax.com:
> Jelle Sjollema:
>>jelle (heeft gewoon een hekel aan tijd- en datumfuncties)
>
> Me too. In applicaties, database drivers e.d. die datum/tijd-formaten
> moeten converteren en manipuleren is dit vaak goed voor 25% van de
> bugs. Wat een narigheid.
>
> Het wordt tijd voor een wereldregering, die de wereld indeelt in 10
> tijdzones, het jaar in 10 maanden, de maand in 10 dagen, de dag in 10
> uur, het uur in 10 minuten (dit alles in één verplichte universele
> decimale notatie) ... en... DE ZOMERTIJD AFSCHAFT!
:-D. En geen schrikkeldingen :-D
--
John Voorbeeldscripts in Perl:http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html