compte à rebours JavaScript pour MySQL format datetime
-
05-10-2019 - |
Question
J'ai une date qui vient d'une base de données MySQL dans le format datetime
, quelque chose comme 2010-09-24 11:30:12
. Et je besoin d'un moyen de montrer un compte à rebours des heures. Minutes à cette date
Je ne suis pas très familier avec les dates en JavaScript de sorte que toute aide serait aprécié. Merci.
La solution
Vous voudrez peut-être utiliser le Format (le nombre de secondes depuis le 1er Janvier, 1970). Disons que notre date cible est '2011-01-01 00:00:00'
(en réalité, vous auriez probablement un champ de votre table, au lieu d'une constante):
SELECT UNIX_TIMESTAMP('2011-01-01 00:00:00') AS timestamp;
+---------------+
| timestamp |
+---------------+
| 1293836400 |
+---------------+
1 row in set (0.00 sec)
Ensuite, nous pouvons utiliser la méthode getTime()
du Date
objet en JavaScript afin de calculer le nombre de secondes entre le temps actuel et le temps cible. Une fois que nous avons le nombre de secondes, on peut facilement calculer les heures, les minutes et les jours:
var target = 1293836400; // We got this from MySQL
var now = new Date(); // The current tume
var seconds_remaining = target - (now.getTime() / 1000).toFixed(0);
var minutes_remaining = seconds_remaining / 60;
var hours_remaining = minutes_remaining / 60;
var days_remaining = hours_remaining / 24;
alert(seconds_remaining + ' seconds'); // 8422281 seconds
alert(minutes_remaining + ' minutes'); // 140371.35 minutes
alert(hours_remaining + ' hours'); // 2339.5225 hours
alert(days_remaining + ' days'); // 97.48010416666666 days
Autres conseils
Vous pouvez utiliser le plugin jquery http://keith-wood.name/countdown.html
Il suffit de passer votre date de MySQL et le temps de js comme une variable js
La syntaxe est
$(selector).countdown({until: liftoffTime, format: 'HMS'})
code js ici
function mysqlTimeStampToDate(timestamp) {
//function parses mysql datetime string and returns javascript Date object
//input has to be in this format: 2010-09-24 11:30:12
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}
$('#selector').countdown({until: mysqlTimeStampToDate(<? echo "2010-09-24 11:30:12" ?>), format: 'HMS'});
Il y a un Date.parse () méthode que le travail de force.