Zeitstempel / Millisekunden des jeweilis vorherigen Tages
bello1234
- javascript
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!
getTime() ?
Zu finden in der Objektreferenz von JavaScript. Damit kannst du dir wenigstens vom einem bekannten Referenzdatum die Differenz in Millisekunden geben lassen.
@@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.
Qapla'
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
@@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'
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