Установка часового пояса при использовании jQuery CountDown

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

 $('#countdown').countdown('<?php echo $date_end?>').on('update.countdown', function(event) {
            var format = '%-S second%!S';

            if (event.offset.years > 0 || event.offset.weeks > 0 || event.offset.days > 0 || event.offset.hours > 0 || event.offset.minutes > 0) {

                if(event.offset.minutes > 0) {
                    format = '%-M minute%!M ' + format;
                }
                if(event.offset.hours > 0) {
                    format = '%-H hour%!H ' + format;
                }
                if(event.offset.days > 0) {
                    format = '%-d day%!d ' + format;
                }
                if(event.offset.weeks > 0) {
                    format = '%-w week%!w ' + format;
                }
            }
           $(this).html(event.strftime(format));
        }).on('finish.countdown', function(event) {
           $(this).html('Finished');
        });

Я видел несколько примеров добавления часовых поясов, но ни один из них не использует плагин обратного отсчета jquery так же, как мы.

Любые идеи о том, как добавить +10 в качестве текущего часового пояса? так что он использует это, а не часовой пояс пользователя?

Благодарю.

3 ответа

Я предполагаю, что вы используете https://github.com/hilios/jQuery.countdown, потому что у него нет параметров часового пояса для его использования.

Я использовал moment.js и moment-timezone-with-data.js(содержит все часовые пояса) для обработки часового пояса.

<div data-countdown="2015/05/20"  data-zone="US/Central" class="countdown"></div>

функция для преобразования даты в правильный часовой пояс и возвращает в миллисекундах

var timefun = function (countdown,zone){
 var date = moment.tz(countdown,"YYYY/MM/DD",zone);
 return date.valueOf();   
}

используйте вышеупомянутую функцию для передачи миллисекунд в качестве аргумента jQuery.countdown()

$(".countdown").countdown(timefun($(".countdown").data("countdown"),$(".countdown").data("zone")))

пример: http://jsfiddle.net/heLrsnqx/2/

если вы используете http://keith-wood.name/countdown.html, см. следующий пример

пример: http://jsfiddle.net/w1oyv8kv/

Похоже, что фактическая дата, которая используется в коде, исходит из этого фрагмента PHP. Вы можете установить часовой пояс по умолчанию в PHP, используя:

date_default_timezone_set($timezone_identifier);

$timezone_identifier это строка, которая может быть такими вещами, как 'UTC' или же 'America/Los_Angeles',

Полный список поддерживаемых идентификаторов часовых поясов см. В соответствующих документах по PHP.

Согласно документации, вы можете получить доступ к объекту finalDate с помощью event.finalDate, Так что если вы не можете установить серверную часть часового пояса, сделайте event.finalDate.setUTCHours(10) перед звонком event.strftime

Подробнее о setUTCHours здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours

Другие вопросы по тегам