[JS] Flot geeft verkeerde tijd op x-as

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 21-09 18:13
Hi,

ik ben bezig met de flot-library wat mooie grafiekjes op het scherm te zetten, alleen loop ik tegen een probleem aan als ik met tijd aan de gang ga. Ik heb een aantal (PHP/Unix-)timestamps met wat bijbehorende waarden, die ik graag wil plotten. Als ik de Unix-timestamp naar een JS-timestamp omzet (simpelweg * 1000), die die netjes met de rest van de gegevens aan Flot door geef, kloppen de tijden niet: op de x-as is het tijdstip 2 uur eerder dan de werkelijke tijd.

Nu zat ik al te denken aan een mogelijk conflict met de tijdzones (hier in Nl nu GMT+2), maar ik krijg maar niet uigevogeld hoe ik de tijden goed krijg.

Even ter verduidelijking, ik heb het volgende punt: (timestamp van 10:30]; 130.5). Op de grafiek staat 130.5 netjes op de y-as, alleen zie ik onder dit punt op de x-as 8:30 staan. |:(

Iemand?

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:10

MueR

Admin Tweakers Discord

is niet lief

Doe eens wat relevante code. Zonder is het een partij gokwerk. Laat eens zien wat je geprobeerd hebt om het op te lossen?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 21-09 18:13
MueR schreef op dinsdag 31 augustus 2010 @ 13:32:
Doe eens wat relevante code. Zonder is het een partij gokwerk. Laat eens zien wat je geprobeerd hebt om het op te lossen?
Je post precies te vroeg, heb het net opgelost, maar ik zoek nog een wat mooiere oplossing.

Nu heb ik bovenaan mijn script het volgende geplaatst:

PHP:
1
date_default_timezone_set('UTC');


Wat het probleem oplost. Het blijkt dus inderdaad een timezone probleem te zijn. Enig nadeel: nu zijn dus wel al mijn tijden verder in UTC+0..
Betreffende stukje code (nog niet heel erg netjes maar is even testopstelling):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if($get = $mysqli->query('--query om gegevens op te halen--')) {
    if($get->num_rows > 0) {
        // hier wordt $data gevuld
        echo '<script type="text/javascript">
            var d = ['.$data.'];
            $.plot($("#placeholder"), [d], { xaxis: { mode: "time", timeformat: "%H:%M" } });
        </script>';
    } else {
        // foutafhandeling
    }
} else {
    // foutafhandeling
}


Wat ik zelf al geprobeerd heb ik om handmatig 2 uur van de tijd af te halen, maar dat werkt dus niet :) Ben nu even de PHP/mySQL handleiding aan het doorspitten om een functie te zoeken die mijn (specifieke) tijd uit de DB om kan zetten naar een andere tijdzone.

Edit:
Problem solved. Ik gebruik strotime om de datebase datetime om te zetten naar een timestamp. Het was voldoende om daar even ' UTC+0200' achter te plakken. Tenzij iemand hier überhaupt een nettere oplossing voor heeft (timestamp van datetime veld maken) zie ik dit als opgelost ;)

[ Voor 10% gewijzigd door Svennetjee op 31-08-2010 13:48 ]


Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Ik gok zo dat je tijden tot 25 oktober kloppen... daarna lopen ze een uur voor :+

Raar... Is zo gek nog niet


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Svennetjee schreef op dinsdag 31 augustus 2010 @ 12:38:
Nu zat ik al te denken aan een mogelijk conflict met de tijdzones (hier in Nl nu GMT+2), maar ik krijg maar niet uitgevogeld hoe ik de tijden goed krijg.
Wat is de ingestelde tijdzone dan op de server en bij de ingestelde PC?
Javascript werkt immers lokaal binnen de webbrowser.
Svennetjee schreef op dinsdag 31 augustus 2010 @ 13:43:
Problem solved. Ik gebruik strotime om de datebase datetime om te zetten naar een timestamp. Het was voldoende om daar even ' UTC+0200' achter te plakken. Tenzij iemand hier überhaupt een nettere oplossing voor heeft (timestamp van datetime veld maken) zie ik dit als opgelost
Tijden als GMT+1 opslaan in de database? Dan hoef je later namelijk ook je configuratie niet aan te passen vanwege de zomer- en wintertijd.

[ Voor 44% gewijzigd door CH4OS op 31-08-2010 16:54 ]


Acties:
  • 0 Henk 'm!

  • Svennetjee
  • Registratie: December 2007
  • Laatst online: 21-09 18:13
Tsjilp schreef op dinsdag 31 augustus 2010 @ 16:35:
Ik gok zo dat je tijden tot 25 oktober kloppen... daarna lopen ze een uur voor :+
PHP:
1
2
$offset = date('O');
// +0200


tadaa ;)
Pagina: 1