Hallo, Ingo!
var timestamp = 1099272882359; var zeit=new Date(); zeit.setTime(timestamp);
vielen dank! ich hab die seite immer wieder rauf und runter gelesen, aber auf die idee bin ich nicht gekommen. das vereinfacht den code erheblich.
für die zeit, die in der sommerzeit liegt, kommt ein falscher timestamp heraus. der ist dann um die sommerzeit nach "vorn" oder nach "hinten" verschoben.
bist Du Dir da sicher? Der timestamp ist doch lediglich die Zahl der verstrichenden Millisekunden. Erst die Date-Funktion macht daraus eine Sommer- oder Winterzeit.
nein, inzwischen bin ich mir wieder über garnichts mehr sicher. :-(
------------------------------
<script type="text/javascript">
<!--
var GMTdates = new Array();
function offset_korrektur(timestamp,Nr){
var dat = new Date();
dat.setTime(timestamp);
var stamp = timestamp/1000;
var offset = dat.getTimezoneOffset()*60;
GMTdates[Nr] = stamp + offset;
}
// -->
</script>
------------------------------
<SCRIPT type=text/javascript>
document.write("<input class=timer value='' readonly name='time1'>");
offset_korrektur(1099258293000,1); //timestamp in millisekunden und laufende nummer
</SCRIPT>
<SCRIPT type=text/javascript>
document.write("<input class=timer value='' readonly name='time2'>");
offset_korrektur(1099342194000,2);
</SCRIPT>
............... u.s.w.
------------------------------
<script type="text/javascript">
<!--
function go(){
var datum = new Date();
var offset = datum.getTimezoneOffset()*60;
var timestamp = Math.floor((datum.getTime()/1000) + offset);
for (i=1;i<GMTdates.length;i++){
var start = GMTdates[i] - timestamp;
document.clock.elements["time" + i].value = calcTime(start);
}
window.setTimeout('go()',1000)
}
function toSt(n) {
s = (n < 10)? "0":"";
return s + n.toString();
}
function calcTime(count) {
if (count <= 0) {
return "Abgelaufen";
}
var secs = toSt(count % 60);
count = Math.floor(count / 60);
var mins = toSt(count % 60);
count = Math.floor(count / 60);
var hours = toSt(count % 24);
count = Math.floor(count / 24);
var days = count;
return days + "T " + hours + ":" + mins + ":" + secs;
}
// -->
</script>
------------------------------
eigentlich dachte ich mir, wenn ich von beiden timestamps das offset abziehe, bringe ich sie beide wieder rechnerisch auf ein niveau. wenn anfangs- oder endzeit durch die sommerzeit sozusagen eine zeitzone weiter verschoben ist, hat sie ja auch ein höheres offset.
da es ja für die berechnung der verbleibenden sekunden nur auf die differenz der beiden ankommt, ist der tatsächliche timestamp irrelevant.
obwohl beide offsets jetzt -3600 sind, habe ich aber trotzdem eine stunde abweichung (zu viel) und ich kann mir nicht erklären, warum.
freundl. Grüsse aus Berlin, Raik