[php] Timestamp klopt niet met mktime()

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 31028

Topicstarter
Okey, als de timestamp het aantal seconde is vanaf January 1 1970 00:00:00 GMT dan klopt het volgende toch niet.

PHP:
1
2
3
4
5
6
7
<?php
//Convert date format to unix timestamp
//mktime(hour,minute,second,month,day,year)

$timestamp = mktime(2,0,0,1,1,1970);
echo "$timestamp";
?>


Het resultaat hiervan is 3600, en dat is 1 uur, niet 2.
Waar zit mijn denkfout ?? :?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13:20

Janoz

Moderator Devschuur®

!litemod

Zomer / winter tijd?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je server kan ook nog in een andere tijdzone zitten, de epoch was in GMT

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10:52

Bosmonster

*zucht*

Precies.. hier in Nederland zitten we in GMT+1 :)

(maar zou het resultaat dan niet 3602 moeten zijn? of sterker nog, -3598 ( =0 in timestamp)?)

[ Voor 55% gewijzigd door Bosmonster op 03-06-2003 15:37 ]


Acties:
  • 0 Henk 'm!

  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04 18:06

[ash]

Cookies :9

int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])

is_dst can be set to 1 if the time is during daylight savings time, 0 if it is not, or -1 (the default) if it is unknown whether the time is within daylight savings time or not. If it's unknown, PHP tries to figure it out itself. This can cause unexpected (but not incorrect) results.
Misschien toch ff met zomer/wintertijd rommelen zoals Janoz als zei.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bosmonster schreef op 03 June 2003 @ 15:35:
Precies.. hier in Nederland zitten we in GMT+1 :)

(maar zou het resultaat dan niet 3602 moeten zijn? of sterker nog, -3598 ( =0 in timestamp)?)
Hoezo, de volgorde van die velden in mktime is een beetje random ofzo bedacht :o
De eerste is het aantal uren.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:01

.oisyn

Moderator Devschuur®

Demotivational Speaker

Bosmonster schreef op 03 June 2003 @ 15:35:
(maar zou het resultaat dan niet 3602 moeten zijn? of sterker nog, -3598 ( =0 in timestamp)?)
de timestamp is in seconden. GMT +1 betekent natuurlijk dat we 1 uur verder zijn dan GMT. 1 uur = 3600 seconden.

De topicstarter geeft als datum op: 1 januari 1970 om 02:00:00
Maar dat is GMT +1, dus GMT wordt dat 1-01-1970 01:00:00

En dat is 1 uur oftewel 3600 seconden na de epoch, terwijl de topicstarter verwacht dat het 7200 seconden moet zijn ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Anoniem: 55193

Het is imho flauwekul om er vanuit te gaan dat mktime ook maar in de verste verte rekening houdt met tijdzones.

uit de php manual :

Is_dst kan naar 1 gezet worden als de tijd tijdens zomertijd valt, of 0 wannneer dat niet zo is, of -1 (default) als het niet bekend is of de tijd zich in zomertijd bevindt. Als deze parameter niet wordt meegegeven probeert PHP het zelf uit te zoeken wat kan leiden tot niet verwachte, maar wel correcte resultaten.

sorry...niet gezien...oplossing was al gepost

[ Voor 6% gewijzigd door Anoniem: 55193 op 03-06-2003 17:21 . Reden: was al gepost. ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10:52

Bosmonster

*zucht*

ACM schreef op 03 juni 2003 @ 15:44:
[...]

Hoezo, de volgorde van die velden in mktime is een beetje random ofzo bedacht :o
De eerste is het aantal uren.
Ow ja.. haal die volgorde altijd door elkaar :/

Zo kom je met PHP wel eens in de knel als je logisch nadenkt ;)

Acties:
  • 0 Henk 'm!

Anoniem: 23998

Kun je even het onderstaande proberen en ons laten weten wat het resultaat is?:
PHP:
1
print date("Y-m-d", mktime(2,0,0,1,1,1970,-1));
Pagina: 1