[php] conversie timestamps naar andere timezones

Pagina: 1
Acties:

Onderwerpen


  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05 11:17

bouvrie

Interior demolisher

Topicstarter
Ik gebruik een MySQL database om tijden vast te leggen, die ik middels php op m'n site wil laten zien. 8)

Nu vraag ik me echter af wat er allemaal voor nodig is om zo'n timestamp uit de database (die dus volgens de server-side tijd en timezone-settings) om te zetten naar een equivalent uit een andere tijdzone. :?

Ik ging er in eerste instantie van uit, dat het mogelijk zou moeten zijn om bijvoorbeeld allereerst de timestamp naar GMT om te zetten, en vervolgens de gegevens van de nieuwe timestamp (-1h, +1h, etc) te verwerken door het betreffende aantal uren bij de oorspronkelijke tijd op te tellen. Dit is geen probleem, en ik heb ook verschillende sites gevonden die deze manier vermelden.

Nu begin ik echter een beetje te twijfelen; is het bijtellen van het aantal uren/minuten wel genoeg? Ik merkte bijvoorbeeld dat er meerdere gebieden zijn die tijdzone GMT+1 hebben (Amsterdam, West Central Africa), maar toch als aparte tijdzones genoemd worden (zie hiervoor ook de Time Zone settings in Windows). Ik denk dat Daylight Saving Time hiermee iets te maken heeft. Ik vermoed dat Daylight Saving Time in elk van deze gebieden op een andere manier wordt gebruikt. Zo zou het volgens mij dus kunnen voorkomen dat het in gebied 1 10:00u is, terwijl het in gebied 2 net 9:00u is geworden vanwege de Daylight Saving Time. Mijn vraag is nu: dient met het omvormen van tijden ook rekening gehouden te worden met andere factoren als de Daylight Saving Time?

01010100011010000110010100100000010011110100111001000101001000000011101000101001


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

het is altijd een heel of een half uur dus uren/minuten toevoegen zou genoeg moeten zijn :)

edit:
Oh het kan ook nog een kwartier zijn :P

[ Voor 24% gewijzigd door Wolfboy op 28-08-2003 23:58 ]

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05 11:17

bouvrie

Interior demolisher

Topicstarter
hmmm als ik in Windows mn timezone allereerst op GMT-01:00 Cape Verde Is. zet, dan is m'n system time 21:00h. Wanneer ik deze dan op GMT-01:00 Azores zet, wordt m'n tijd 22.00h :?

Dit gebeurt overigens wel enkel wanneer ik "Automatically Adjust clock for daylight saving changes" aanvink bij deze laatste optie. Bij Cape Verde wordt deze checkbox niet gegeven...

Iemand enig idee wat dit inhoudt?

01010100011010000110010100100000010011110100111001000101001000000011101000101001


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

bij de ene hebben ze wel zomer en wintertijd en bij de andere niet :P

das het enige verschil

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
bouvrie schreef op 29 August 2003 @ 00:09:
Dit gebeurt overigens wel enkel wanneer ik "Automatically Adjust clock for daylight saving changes" aanvink bij deze laatste optie. Bij Cape Verde wordt deze checkbox niet gegeven...

Iemand enig idee wat dit inhoudt?
Cape Verde does not operate Daylight-Saving Time
Gevonden op http://www.greenwichmeant...a/cv.htm?cape_verde+praia.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05 11:17

bouvrie

Interior demolisher

Topicstarter
ehm...

als ik enkel 1 uur van de GMT tijd af zou halen in mijn voorbeeld zit ik alleen voor Cape Verde Island goed. De tijd klopt dan niet meer voor Azores, terwijl deze toch OOK onder de GMT-1 tijdzone valt... Mijn punt: GMT minus (aantal uren en aantal minuten) werkt NIET in dit geval? :?

*edit*
Yeh, de reden van dat verschil van Cape Verde en DST begreep ik, maar dus vraag ik me af hoe ik in PHP ook daarmee rekening kan houden... |:(

[ Voor 29% gewijzigd door bouvrie op 29-08-2003 00:20 . Reden: Zpellingk ]

01010100011010000110010100100000010011110100111001000101001000000011101000101001


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

gewoon bij alle plaatsen zeggen of ze wel of geen zomer-winter tijd verschillen hebben.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Het is vrij simpel: je timestamp is in principe een tijdspanne die verstreken is ten op zichte van een afgesproken punt in de tijd. MySQL kan met de built-in functie UNIX_TIMESTAMP een UNIX timestamp opleveren, die geschikt is voor gebruik in combinatie met PHP-functies zoals date en time. Die timestamp is toevallig een getal dat het aantal seconden sinds 1970 representeerd, maar dat doet verder niet echt terzake (tenzij je data van voor 1970 of van na tweeduizend-zoveel moet representeren of een grotere precisie dan één seconde nodig hebt).

Bovengenoemde functies corrigeren automatisch voor tijdzones en zomer-/wintertijd; daar hoef je dus zelf helemaal niets meer aan te doen. By default gebruikt PHP gewoon de systeeminstellingen om te bepalen hoe de lokale tijd in elkaar steekt, maar als je het wil aanpassen aan je gebruiker, moet je handmatig de juiste tijdzone instellen met de functie setlocale. Als tweede argument geef je een code uit ISO 639 mee; als ik het goed begrijp zijn zowel de 2-letter, 3-letter als volledige benamingen geldig.

Acties:
  • 0 Henk 'm!

  • bouvrie
  • Registratie: Augustus 2002
  • Laatst online: 21-05 11:17

bouvrie

Interior demolisher

Topicstarter
Wolfboy schreef op 29 augustus 2003 @ 00:32:
gewoon bij alle plaatsen zeggen of ze wel of geen zomer-winter tijd verschillen hebben.
hmmm dus ik zou een array moeten maken van alle gevallen waarin dit optreedt, en dan daarbij ook nog eens uitzoeken wanneer de zomertijd in die gevallen ingaat/afloopt? Want ook de begin- en eindtijd staat volgens mij niet altijd vast; zie http://www.timeanddate.com/time/aboutdst.html

Anyway, het lijkt me een beetje veel werk om iets dergelijks als dit goed te krijgen. Toch wordt deze behoefte waarschijnlijk al op diverse forums en door enkele sites vervuld. Vraag is alleen.. hoe?

*edit*

Na het advies van Soultaker te hebben bekeken krijg ik mede door het commentaar op de php site toch een beetje het idee dat setlocale sterk server-afhankelijk is. Op het moment ontwikkel ik de site op zowel Windows 2K server als Linux en wil liever niet rekening hoeven te houden met de server waarop de php draait.

Maar ja, tis op dit moment mijn enige lead, dus ik kijk nog even verder... :)

[ Voor 30% gewijzigd door bouvrie op 29-08-2003 01:32 ]

01010100011010000110010100100000010011110100111001000101001000000011101000101001


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Nooit ingewikkelde dingen zelf gaan doen als er al een methode voor bestaat, hè! :)
Pagina: 1