bello1234: Zeitstempel / Millisekunden des jeweilis vorherigen Tages

Hallo zusammen,

nachdem ich nun eine halbe Stunde das Archiv durchsucht habe und nichts passendes gefunden haben, frag ich einfach mal direkt an:

Ich hänge gerade an einer Stelle wo es darum geht, den Zeitstempel (also die Millisekunden ab 01.01.1970) vom jeweils LETZTEN VERGANGENEN Tag zu berechnen.

Beispiel: Das Script wird am 25.08.2010 ausgeführt. Also sollen die "Start- und End-Millisekunden" vom 24.08.2010 als Ergebnis rauskommen:

Start, 24.08.2010, 00.00 Uhr   -->   1282600800
Ende,  24.08.2010, 23.59 Uhr   -->   1282687199

Das ganze soll natürlich möglichst dynamisch ablaufen, also so dass keine speziellen Daten im Script reingeschrieben werden.

Aktuell geschrieben habe ich foldendes, wobei es auch sein kann, dass ich da einen komplett falschen Ansatz angegangen bin:

  
function zeit ()  
{  
var tag = Zeit.getDate() - (1);  
// Vorheriger Tag  
var monat = Zeit.getMonth();  
// Aktueller Monat  
var jahr = Zeit.getYear();  
// Aktuelles Jahr  
var letzterTag = new Date(jahr, monat, tag);  
// Neues Objekt mit dem eben ermitteltem, vorherigen Tag  
....  
}  

Nun habe ich keine Idee wie ich mit diesem Objekt am besten weiterverfahren kann, um an die oben genannten Daten zu kommen!
Ansätze wie z.B. mit getTime() liefen komplett daneben, daher lohnt sich diese auch nicht zu posten.

Bin um jede Hilfe dankbar!
Viele Grüße!

  1. getTime() ?
    Zu finden in der Objektreferenz von JavaScript. Damit kannst du dir wenigstens vom einem bekannten Referenzdatum die Differenz in Millisekunden geben lassen.

  2. @@bello1234:

    nuqneH

    Beispiel: Das Script wird am 25.08.2010 ausgeführt. Also sollen die "Start- und End-Millisekunden" vom 24.08.2010 als Ergebnis rauskommen:

    Start, 24.08.2010, 00.00 Uhr   -->   1282600800

    Nein, es sind tausendmal so viele:      1282600800000.

    Ende,  24.08.2010, 23.59 Uhr   -->   1282687199

    Nein, 23:59:00 ist:                     1282687140000

    Du meinst 23:59:59?

    Und wie kommst du darauf? Der Tag ist noch eine Sekunde länger – bis 24:00:00, was der Beginn des neuen Tages ist.

    var tag = Zeit.getDate() - (1);

    Wo kommt 'Zeit' her?

    Wozu die Klammern um die 1?

    Das ist nicht wirklich schön, wenn es gerade der 1. Tag des Monats ist. dann kommt der nullte Tag raus.

    // Vorheriger Tag
    var monat = Zeit.getMonth();
    // Aktueller Monat
    var jahr = Zeit.getYear();
    // Aktuelles Jahr
    var letzterTag = new Date(jahr, monat, tag);

    Und ein neues Datumsobjekt zu erzeugen muss auch nicht sein.

    Nimm das aktuelle:

    var Zeit = new Date();   // aktueller Zeitpunkt  
    Zeit.setHours(0);        // heutiger Tagesanfang: 00:00:00.000  
    Zeit.setMinutes(0);  
    Zeit.setSeconds(0);  
    Zeit.setMilliseconds(0);
    

    Dann hast du in 'Zeit.getTime()' den Zeitstempel des gestrigen Tages 24:00:00.

    Um den den Zeitstempel des gestrigen Tages 00:00:00 zu erhalten, musst du wieviele Millisekunden abziehen?

    Ansätze wie z.B. mit getTime() liefen komplett daneben, daher lohnt sich diese auch nicht zu posten.

    Ach so?

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hi,

      Dann hast du in 'Zeit.getTime()' den Zeitstempel des gestrigen Tages 24:00:00.
      Um den den Zeitstempel des gestrigen Tages 00:00:00 zu erhalten, musst du wieviele Millisekunden abziehen?

      Das hängt wie immer von der Länge des jeweiligen Tages ab, die zwischen 23 und 25 Stunden liegt.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. @@MudGuard:

        nuqneH

        Um den den Zeitstempel des gestrigen Tages 00:00:00 zu erhalten, musst du wieviele Millisekunden abziehen?

        Das hängt wie immer von der Länge des jeweiligen Tages ab, die zwischen 23 und 25 Stunden liegt.

        Hm. Würde Zeit.setDate(Zeit.getDate() - 1); das Problem lösen?

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
    2. Das ist nicht wirklich schön, wenn es gerade der 1. Tag des Monats ist. dann kommt der nullte Tag raus.

      Nein, es kommt der letzte Tag des vorherigen Monats heraus.

      new Date(2010, 0, 1, 12)

      Fri Jan 01 2010 12:00:00 GMT+0100

      new Date(2010, 0, 0, 12)

      Thu Dec 31 2009 12:00:00 GMT+0100

      new Date(2010, 0, -1, 12)

      Wed Dec 30 2009 12:00:00 GMT+0100

      usw., 0 und negative Werte sind durchaus nutzbar.

      Würde Zeit.setDate(Zeit.getDate() - 1); das Problem lösen?

      Ja. (t.setTime(t.getTime() - (1000 * 60 * 60 * 24)) und dergleichen beachten die Zeitumstellung nicht.)

      Und ein neues Datumsobjekt zu erzeugen muss auch nicht sein.

      Wenn man sowieso zwei neue Datumsobjekte braucht, halte ich das durchaus für sinnvoll:

      var now = new Date;  
      var a = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);  
      var b = new Date(now.getFullYear(), now.getMonth(), now.getDate());  
      alert(now + '\n' + a + '\n' + b);
      

      Mathias