<html>
<?php
$endTime = mktime(00, 00, 00, 01, 01, 2012);
$actTime = time();
$difTime = $endTime - $actTime;
$seconds = $difTime;
?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
window.setInterval(function() {
var timeCounter = $('div#timer').html();
var updateTime = eval(timeCounter)- eval(1);
$('div#timer').html(updateTime);
}, 1000);
});
</script>
<div id="timer"><?php echo $seconds ?></div>
</html>
|
|
var counterHandle;
function startCountdown() {
var currentValue = parseInt($('div#timer').html());
if (currentValue > 0) {
currentValue--;
$('div#timer').html(currentValue);
}
else {
window.clearInterval(counterHandle);
alert('Frohes neues!');
}
}
$(document).ready(function() {
counterHandle = window.setInterval('startCountdown()', 1000);
});
var counterHandle;
// Datum merken, bis wo der countdown runterzählt
// Kann auch durch php gesetzt werden
var countdownDate = new Date(2012, 0, 1);
function startCountdown() {
var now = new Date();
if (now < countdownDate) {
var timeObj = getTimeObjBetween(now, countdownDate);
$('div#display').html(
timeObj.totalDays + ' - '
+ timeObj.hours + ':'
+ timeObj.minutes + ':'
+ timeObj.seconds);
}
else {
window.clearInterval(counterHandle);
alert('Frohes neues!');
}
}
function getTimeObjBetween(startDate, endDate) {
var ONE_SECOND = 1000;
var ONE_MINUTE = 60 * ONE_SECOND;
var ONE_HOUR = 60 * ONE_MINUTE;
var ONE_DAY = 24 * ONE_HOUR;
var resultObject = {totalDays:0, hours:0, minutes:0, seconds:0};
var timespan = endDate.getTime() - startDate.getTime();
var dayCount = timespan / ONE_DAY;
resultObject.totalDays = Math.floor(dayCount);
var hours = (dayCount - resultObject.totalDays) * 24;
resultObject.hours = Math.floor(hours);
var minutes = (hours - resultObject.hours) * 60;
resultObject.minutes = Math.floor(minutes);
var seconds = (minutes - resultObject.minutes) * 60;
resultObject.seconds = Math.floor(seconds);
return resultObject;
}
$(document).ready(function() {
counterHandle = window.setInterval('startCountdown()', 1000);
});
|
|
|
|
|
Ich habe meiner Antwort ein Update hinzugefügt - Ich hoffe es hilft dir. Hatte gestern keine Zeit mehr. Grüße
– Nicolai Schönberg 22.12.2011
|
var now = new Date(<?php date("Y, n-1, j, G, i, s"); ?>); mit in die Methode startCountdown(), dann hab ich ja jede Sekunde eine Serveranfrage. Soll ja auch nicht sein. Die Zeit so also per JavaScript heruntergezählt werden. Wie könnte man denn das ohne großen Aufwand lösen?
<html>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script type="text/javascript">
var counterHandle;
var countdownDate = new Date(2012, 0, 14, 12, 00, 00);
var now = new Date(<?php date("Y, n-1, j, G, i, s"); ?>);
function startCountdown() {
if (now < countdownDate) {
var timeObj = getTimeObjBetween(now, countdownDate);
$('div#display').html(
timeObj.totalDays + 'T '
+ timeObj.hours + ':'
+ timeObj.minutes + ':'
+ timeObj.seconds);
}
else {
window.clearInterval(counterHandle);
}
}
function getTimeObjBetween(startDate, endDate) {
var ONE_SECOND = 1000;
var ONE_MINUTE = 60 * ONE_SECOND;
var ONE_HOUR = 60 * ONE_MINUTE;
var ONE_DAY = 24 * ONE_HOUR;
var resultObject = {totalDays:0, hours:0, minutes:0, seconds:0};
var timespan = endDate.getTime() - startDate.getTime();
var dayCount = timespan / ONE_DAY;
resultObject.totalDays = Math.floor(dayCount);
var hours = (dayCount - resultObject.totalDays) * 24;
resultObject.hours = Math.floor(hours);
var minutes = (hours - resultObject.hours) * 60;
resultObject.minutes = Math.floor(minutes);
var seconds = (minutes - resultObject.minutes) * 60;
resultObject.seconds = Math.floor(seconds);
return resultObject;
}
$(document).ready(function() {
counterHandle = window.setInterval('startCountdown()', 1000);
});
</script>
<div id="display"></div>
</html>
|
|
|
Warum setzt du 'now' nicht einfach im JavaScript so wie ich es in meinem Beispiel gemacht habe? Dann wird es jedes mal von JavaScript gesetzt.
– Nicolai Schönberg 02.01.2012
|
||
|
Weil dann ja nicht die Serverzeit verwendet wird?!? Somit könnte ja jemand der eine falsche Uhrzeit konfiguriert hat, ne andere Restzeit haben. Oder?
– MRae 02.01.2012
|
||
|
Joar - Das ist aber gar nicht mal das Problem in JavaScript. Auf der JavaScript Seite bekommst du immer die Zeit des Rechners der die Seite aufruft. Das bedeutet auch, das die Zeit aus einer anderen Zeitzone kommen kann (Was auch OK ist). Es sollte nicht dein Problem sein, wenn jemand seine Uhrzeit falsch eingestellt hat. Du musst den client und den server auf die gleiche Zeit bringen, am einfachsten geht das mit UTC (Koordinierte Weltzeit). Rechnen also mit UTC Wert, für die Anzeige wieder umwandeln. Hier noch ein link: http://stackoverflow.com/questions/3714443/php-return-js-utc-date-format
– Nicolai Schönberg 03.01.2012
|