JS Timestamp - Uhrzeit "neutralisieren"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • JS Timestamp - Uhrzeit "neutralisieren"

    Hi,
    habe Datenreihe mit Uhrzeiten im Javascript Timestamp (Zeit seit 1970/01/01 0 Uhr) in Milisekunden, also sowas wie 1295562282000, 1295630024000, 1295699043000

    Für eine graphische Darstellung der Werte würde ich den Uhrzeitanteil gerne "neutraliseren" - also für jeden Tag auf z.b. 00:00 setzen.

    Hätte einer ne Idee wie ich das angehen muß?
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    Hallo,

    ja, indem du Modulo dividierst mit 86400 (60 * 60 * 24).

    Edit: Achso, du hast Millisekunden, also dann 86400000.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      Nicht jeder Tag hat 86400 Sekunden.

      Comment


      • #4
        Ich weiß, aber es kommt trotzdem das richtige raus. PHP rechnet nicht mit Schaltsekunden, daher bekommt man trotzdem dieselbe Uhrzeit, auch wenn man beliebig oft ganze Tage (86400) abzieht.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          H
          THX für eure antwort.
          Wenn ich das so mache:
          PHP Code:
          for(i=0sizeof(chart); i++){
               
          chart[i][0] -= chart[i][0] % 86400000;

          also den Modulo Wert subtrahiere passt es.
          Und die Sekunden verschnitt die h3ll ansparch sind mir in meinem Fall egal:
          ich baue mir aus den Werten einer Versuchsreihe ein Chart - und die Uhrzeiten hatten mir die Dartstellung verzerrt ...

          BTW.:
          mal ganz allgemein ein fettes Danke & Lob an alle die im Forum Tips geben
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Comment


          • #6
            Originally posted by AmicaNoctis View Post
            Ich weiß, aber es kommt trotzdem das richtige raus. PHP rechnet nicht mit Schaltsekunden, daher bekommt man trotzdem dieselbe Uhrzeit, auch wenn man beliebig oft ganze Tage (86400) abzieht.
            Na dann probieren wir es mal aus:
            PHP Code:
            date_default_timezone_set('Europe/Berlin');

            $timestamp time();
            echo 
            date('Y-m-d H:i:s'$timestamp);
            // 2011-01-28 16:15:40

            $timestamp -= $timestamp 86400;
            echo 
            date('Y-m-d H:i:s'$timestamp);
            // 2011-01-28 01:00:00 
            Ups, kein 0 Uhr? Na sowas

            Selbiges gilt auch für JavaScript, nur ich bin jetzt zu faul mich durch die JavaScript Zeit-Funktionen zu quälen.
            Last edited by h3ll; 28-01-2011, 16:19.

            Comment


            • #7
              Originally posted by h3ll View Post
              Ups, kein 0 Uhr? Na sowas
              Lol, du veralberst mich, oder? Das hat was mit der Zeitzone zu tun, nicht mit Schaltsekunden. Wenn du das im Sommer machst, steht da 2:00 Uhr, gruselig, oder? Der UNIX-Timestamp an sich (egal in welcher Programmiersprache) ignoriert Schaltsekunden einfach. Ein UNIX-Tag hat immer 86400 Sekunden. Durch die Schaltsekunden werden also sehr alte Datumsangaben geringstfügigst ungenau. D. h. die Zeit 0 (1970-01-01 00:00:00) ist eigentlich ein paar Sekunden länger her, wenn man mitgezählt hätte.
              Last edited by AmicaNoctis; 28-01-2011, 18:50.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Comment


              • #8
                Trotzdem erhält er mit deiner Methode nicht 0 Uhr, was er ja eigentlich wollte, wenn ich ihn richtig verstanden habe.

                Comment


                • #9
                  0:00 nach UTC, aber man kann ja auch noch den Zeitzonenversatz abziehen, wenn man lokal 0:00 haben will:

                  PHP Code:
                  date("Y-m-d H:i:s"time() - date("Z")); 
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Comment


                  • #10
                    Ja, das wär so möglich.

                    Comment


                    • #11
                      danke euch beiden.
                      Muß nicht unbedingt 0:00 sein, nur das ich für jeden Tag die gleiche Uhrzeit bekomme
                      "I don't want to belong to any club that would accept me as a member."

                      Groucho Marx

                      Comment


                      • #12
                        Wäre es nicht sauberer|eleganter, den Timestamp in ein Datum umzurechnen, die Uhrzeit unter den Tisch fallen zu lassen (oder auf einen festen Wert zu setzen) und anschließend das Datum wieder in einen Timestamp zu wandeln? Dann wären "Spezialfälle", wie Schaltsekunden, Sommerzeit-Winterzeit-Umstellung usw. automatisch berücksichtigt.

                        Etwa so:

                        Code:
                        // aktuelles Datum mit Uhrzeit (nur als Beispiel)
                        tstamp = new Date();
                        
                        // auf das Datum kuerzen
                        date_from_stamp = new Date(tstamp.year, tstamp.month, tstamp.day);
                        
                        //
                        msecs = date_from_stamp.milliseconds;
                        Wenn der Timestamp sowieso als JavaScript-Objekt vorliegt, kannst du auch die entsprechenden Zeit-Eigenschaften direkt (.hour, .minute, .second, .millisecond) oder per set-Methode (.setHour() usw) auf Null oder den gewünschten Wert setzen.

                        http://developer.mozilla.org/en/Java...l_objects/date
                        Last edited by fireweasel; 01-02-2011, 10:35.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Comment


                        • #13
                          THX fireweasel - denke mal das ist der einfachste Weg
                          "I don't want to belong to any club that would accept me as a member."

                          Groucho Marx

                          Comment


                          • #14
                            OffTopic:
                            Ich hab grad geschnallt, dass es die ganze Zeit um JS ging. Sorry.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Comment


                            • #15
                              Originally posted by AmicaNoctis View Post
                              OffTopic:
                              Ich hab grad geschnallt, dass es die ganze Zeit um JS ging. Sorry.
                              Wer so fleißig ist, darf auch mal was übersehen.

                              Und wäre die Vorgehensweise in PHP so großartig anders? Ich mag die DateTime-Klasse und ihre nahen Verwandten jetzt nicht wirklich, aber wenn man sie benutzt, sollte ->setTime() dort auch das (Kalender-)Datum in Ruhe lassen und nur die Uhrzeit ändern können.
                              Last edited by fireweasel; 01-02-2011, 11:52. Reason: typos
                              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                              Comment

                              Working...
                              X