[PHP] mktime: laatste dag van huidige en vorige maand

Pagina: 1
Acties:
  • 616 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik probeer het werken met datums in PHP onder de knie te krijgen. Na het lezen van PHP's date en mktime, heb ik de volgende code geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// vandaag: 2007-04-23
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j'), date('Y')));

// eerste dag van huidige week:2007-04-23
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j'), date('Y')));

// eerste dag van huidige maand: 2007-04-01
date("Y-m-d", mktime(0, 0, 0, date('m'), 1, date('Y')));

// eerste dag van vorige week: 2007-04-16
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j') - 7, date('Y')));

// laatste dag van vorige week: 2007-04-22
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')));

// eerste dag van vorige maand: 2007-03-01
date("Y-m-d", mktime(0, 0, 0, date('m') - 1, 1, date('Y')));

// laatste dag van vorige maand: 2007-03-31
date("Y-m-d", mktime(0, 0, 0, date('m'), 0, date('Y')));

Een aantal vragen hierbij:
  • volgens mij klopt regel 14 niet: hij geeft nu alleen doe goede dag omdat het maandag is volgens mij. Hoe is deze wel correct?
  • standaard gaat PHP er vanuit dat maandag de eerste dag van de week is. Hoe moet ik deze regels / een instelling aanpassen om bijvoorbeeld zaterdag of zondag als eerste weekdag in te stellen?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 01-04 21:59
Voor de eerste vraag:

date("w"): Numeric representation of the day of the week: 0 (for Sunday) through 6 (for Saturday)

PHP:
1
2
3
4
5
// eerste dag van huidige week:2007-04-22 zo
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j')-date('w'), date('Y')));

// laatste dag van vorige week:2007-04-21 za
date("Y-m-d", mktime(0, 0, 0, date('n'), date('j')-date('w')-1, date('Y')));

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 23:05
Voor het handig omgaan met datums in PHP heb je veel meer aan strtotime().
PHP:
1
$today = strtotime("today");

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
T-MOB schreef op maandag 23 april 2007 @ 23:16:
Voor het handig omgaan met datums in PHP heb je veel meer aan strtotime().
PHP:
1
$today = strtotime("today");
Ik heb php.net en gnu.org erop nageslagen, maar ik zie niet hoe ik met strtotime nu de eerste dag van de afgelopen maand moet bepalen...?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


Acties:
  • 0 Henk 'm!

  • frankivo
  • Registratie: Januari 2002
  • Laatst online: 15-05 13:48
Reveller schreef op maandag 23 april 2007 @ 23:40:
[...]

Ik heb php.net en gnu.org erop nageslagen, maar ik zie niet hoe ik met strtotime nu de eerste dag van de afgelopen maand moet bepalen...?
PHP:
1
date("l", mktime(0, 0, 0, date('m') - 1, 1, date('Y')));


zo gok ik ?

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • Blaise
  • Registratie: Juni 2001
  • Niet online
strtotime is dan ook niet in alle gevallen handig. Het is soms wel handig als je gaat rekenen met tijd, kan je dingen doen als "+ 1 day".
standaard gaat PHP er vanuit dat maandag de eerste dag van de week is. Hoe moet ik deze regels / een instelling aanpassen om bijvoorbeeld zaterdag of zondag als eerste weekdag in te stellen?
Dat kan je niet instellen.

Misschien heb je iets aan deze reactie op php.net, waarin je 24 uur kan optellen bij de returnwaardes. Maar daar heb je pas iets aan als je echt tijd gaat toepassen.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 23:05
Reveller schreef op maandag 23 april 2007 @ 23:40:
[...]

Ik heb php.net en gnu.org erop nageslagen, maar ik zie niet hoe ik met strtotime nu de eerste dag van de afgelopen maand moet bepalen...?
Mja, dat wordt dan zo iets:
PHP:
1
2
3
4
5
//eerste dag vorige maand
$firstDayLastMonth = date('d-m-Y', strtotime(date('1 M Y') .' -1 month'));

//laatste dag vorige maand
$lastDayLastMonth = date('d-m-Y', strtotime(date('1 M Y') .' -1 day'));

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 14:12
laatste dag deze maand:

code:
1
2
<? echo "Deze maand: " . date('t-m-y', mktime(1,1,1,date('m'), 1, date('y'))) . "<br />Vorige maand: ";
echo date('t-m-y', mktime(1,1,1,date('m'), -1, date('y'))); ?>


(uit m'n hoofd...)

[ Voor 14% gewijzigd door lennartkocken op 24-04-2007 09:05 ]

Goedkoopste hardware

Pagina: 1