JS Timestamp - Uhrzeit "neutralisieren"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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]

    Kommentar


    • #3
      Nicht jeder Tag hat 86400 Sekunden.

      Kommentar


      • #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]

        Kommentar


        • #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

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            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.
            Zuletzt geändert von h3ll; 28.01.2011, 16:19.

            Kommentar


            • #7
              Zitat von h3ll Beitrag anzeigen
              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.
              Zuletzt geändert von 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]

              Kommentar


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

                Kommentar


                • #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]

                  Kommentar


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

                    Kommentar


                    • #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

                      Kommentar


                      • #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
                        Zuletzt geändert von fireweasel; 01.02.2011, 10:35.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Kommentar


                        • #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

                          Kommentar


                          • #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]

                            Kommentar


                            • #15
                              Zitat von AmicaNoctis Beitrag anzeigen
                              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.
                              Zuletzt geändert von fireweasel; 01.02.2011, 11:52. Grund: typos
                              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                              Kommentar

                              Lädt...
                              X