【问题标题】:Setting timezone while using jQuery CountDown使用 jQuery CountDown 时设置时区
【发布时间】:2015-05-06 03:14:04
【问题描述】:

目前我们有这个代码,它可以工作,只是它需要使用指定的时区,而不是用户的时区:

 $('#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 添加为当前时区的任何想法?所以它使用那个而不是用户的时区?

谢谢。

【问题讨论】:

  • 我不确定我是否理解您使用插件的方式,或者它是否与此插件相同:keith-wood.name/countdown.html#zones 但是,我在网站上使用了该插件并通过它是在时区 -7 中倒计时的日期/时间,如下所示:jQuery('#countdown').countdown({until: new Date(2020, 1-1, 11, 5, 35, 35), timezone:-7 , 格式:'YODHMS', 紧凑: true});也许这有帮助?

标签: jquery jquery-countdown


【解决方案1】:

我猜你正在使用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/

【讨论】:

  • 嗨。我正在使用这个插件:keith-wood.name/countdown.html - 按照上面问题中的示例代码调用它
  • 感谢 keithwood 示例运行良好,除了它在前面添加了一个错误的 3,请参见此处:jsfiddle.net/w1oyv8kv/3
  • 月份范围从0到11,你提到2015,5,30它在六月之下,如果你正在寻找五月将它改为2015,4,30
【解决方案2】:

看起来代码中使用的实际日期来自那个 PHP sn-p。您可以使用以下方法在 PHP 中设置默认时区:

date_default_timezone_set($timezone_identifier);

$timezone_identifier 是一个字符串,可以是 'UTC''America/Los_Angeles'

有关支持的时区标识符的完整列表,请参阅related PHP docs

【讨论】:

  • 正确,它正在被 PHP 解析。采用这种格式:2015-05-14 17:30:00 使用 php 或 javascript,虽然这个日期/时间是 GMT+10 而不是用户自己的时区,但我怎么能告诉 javascript?
  • 我认为 Michal 的意思是你可以像这样设置一个数组:var timeZones = [ "GMT", "EST", "CMT" ];,然后执行date_default_timezone_set( timeZones[1] );之类的操作
【解决方案3】:

根据文档,您可以使用event.finalDate 访问 finalDate 对象。所以如果你不能设置时区服务器端,在调用event.strftime之前做event.finalDate.setUTCHours(10)

更多关于 setUTCHours 的信息在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours

【讨论】:

  • 我已经尝试添加 event.finalDate.setUTCHours(10);就在 $(this).html(event.strftime(format)); 之前没有任何改变。
猜你喜欢
  • 1970-01-01
  • 2016-06-17
  • 2014-11-16
  • 2013-07-12
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多