О. как раз недавно делал такую штуку.
Обратный отсчёт ведётся до даты, указанной в формате timestamp:
http://jsbin.com/qezevabage/edit
Ток сделано в виде плагина для jQuery, но к нему не сильно привязано.
Формат тоже по стандартам Unix - %M для минут, %S для секунд
сам плугин:
(function ($) {
$.fn.timer = function () {
return $(this).each(function () {
var $el = $(this);
var countFrom = $el.data('time');
var id = setInterval(function () {
var delta = countFrom - Date.now() * 1e-3 | 0;
if (delta < 0) {
clearInterval(id);
delta = 0;
}
var format = "%M:%S";
var tokens = {
'M': delta / 60 | 0,
'S': delta % 60 | 0
};
var formatted = format.replace(/%(\w)/g, function (_, token) {
var value = tokens[token];
return value;
});
$el.html(formatted);
}, 1 * 1e3);
});
};
})(jQuery);
использование:
в разметке:
<!-- Timestamp указывает на дату: (M/D/Y @ h:m:s): 10 / 18 / 14 @ 11:03:21am UTC -->
<div class="Time" data-time="1413630201"></div>
инициализация:
$('.Time').timer();