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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top