Установка часового пояса при использовании 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