2013-08-25 2 views
5

Я использую плагин jQuery для установки таймера обратного отсчета на моей веб-странице. В настоящее время код, который управляет тем, что дисплеи таймера является:Обратный отсчет Javascript для определенного времени и даты

<script type="text/javascript"> 
    var clock = $('.clock').FlipClock(3600 * 24 * 3, { 
     clockFace: 'DailyCounter', 
     countdown: true 
    }); 
</script> 


JS для плагина можно посмотреть здесь: https://github.com/objectivehtml/FlipClock/blob/master/js/flipclock/flipclock.js

Пример страницы кода в использовании можно увидеть здесь: http://flipclockjs.com/faces/daily-counter

В настоящее время таймер является обратным отсчетом на 3 дня, который сбрасывается каждый раз, когда страница обновляется. Я хочу использовать пользовательское время для таймера обратного отсчета, который будет абсолютным (не будет сброшен с обновлением страницы). Я хочу, чтобы дата была 30 сентября 2013 года в 12:00 вечера PST (США Запад - часовой пояс Калифорнии).

Есть ли способ сделать это с помощью Javascript или jQuery?

+0

у вас есть права на запись php-кода? –

+0

nope .. только javascript –

ответ

15

Получить текущее время, и обратите внимание, что это будет время, установленное на пользователей компьютера часы, независимо, что установлен в положение, и установить определенную дату, а затем вычислить разницу и использовать его для плагина:

var date = new Date(Date.UTC(2013, 8, 30, 12, 0, 0)); 
var now = new Date(); 
var diff = date.getTime()/1000 - now.getTime()/1000; 

var clock = $('.clock').FlipClock(diff, { 
    clockFace: 'DailyCounter', 
    countdown: true 
}); 

Для точного времени я бы рекомендовал использовать ваш веб-сервер для вывода текущего времени.

+0

И что говорит typeError? – adeneo

+0

Должен заметить, что плагин, с которым вы связываетесь, называется *** FlipClock ***, а не *** FlipClip ***? – adeneo

+0

да это flipclock, а не флип-клип, но, к сожалению, это не работает ни на http: //www.domainandseo.com/26/index.html .... нормальная версия http://www.domainandseo.com/ 26/index1.html –

8

Я бы сделать это таким образом:

<script type="text/javascript"> 
    var clock = $('.clock').FlipClock(new Date(2013,8,30).getTime()/1000 - new Date().getTime()/1000, { 
     clockFace: 'DailyCounter', 
     countdown: true 
    }); 
</script> 

Это отсчитывает до даты Sept, 30 2013 ... Я не пробовал еще, так что я не уверен, что он работает.

Edit: Исправлена ​​дата будет новая дата (2013,8,30) вместо нового Date (2013,9,30) в месяц отсчет начинается с 0 не 1.

+0

это хорошо, но на самом деле это говорит «осталось 64 дня», но до 30 сентября там shuould осталось около 35 дней. Значит, я думаю, что что-то должно быть не так? –

+0

Да, вы правы. Это должна быть новая дата (2013,8,30). Поместите месяц, который вы хотите - 1, поскольку подсчет месяцев начинается с 0, а не 1. Вероятно, потому, что он учитывает разницу с определенной датой, когда месяц является январем, поэтому, если вы хотите представить январь, вам нужно использовать 0. Кому в сентябре, вы должны использовать 8. Теперь я отредактировал ответ, чтобы быть правильным. –

+0

о да, спасибо большое. Я дал ур ответ плюс один, но другой ответ получил выбранный ответ, потому что он также установил часовой пояс по умолчанию для UTC, как было запрошено в вопросе. Еще раз спасибо :) –

0

Я asssuming first arg of .FlipClip() - это количество времени до завершения обратного отсчета. На этот раз «t» должна быть разница между текущим и целевым временем.

var t = targetTimeInMs - currentTimeInMs; 

Чтобы получить текущее время, используйте конструктор даты no-arg.

var currentTimeInMs = new Date().getTime(); 

Чтобы получить целевое время, поставьте дату с аргументами. Вот несколько примеров из MDN:

var today = new Date(); 
var birthday = new Date("December 17, 1995 03:24:00"); 
var birthday = new Date(1995,11,17); 
var birthday = new Date(1995,11,17,3,24,0); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Я не совсем уверен, что если вам нужно поставить миллисекунды в качестве первого арг к вашей функции .FlipClip(). Для этого обратитесь к документации/источнику. Затем используйте соответствующий метод объекта Date для получения требуемой единицы (секунд? Минут? Часов? И используйте date.getSeconds(), getHours() и т. Д., См. MDN.)

 Смежные вопросы

  • Нет связанных вопросов^_^