繁体   English   中英

具有数据属性时区的Moment.js和Moment时区

[英]Moment.js & Moment Timezone with data-attribute timezones

我有一个服务器生成的country/city格式的位置列表,即

<span class="location" data-timeZoneID="China/Beijing">Beijing</span>
<span class="location" data-timeZoneID="England/London">London</span>

我想使用JS / Jquery和Moment Timezone来做到这一点:

  1. 从每个项目中提取data-timezone-属性
  2. 将其提供给moment.tz()的实例,
  3. 并将元素与结果附加在一起,从而在列出的任何位置显示时间。

编辑 :我已经成功地用jQuery拉数据属性值,但是当我尝试将它们传递给moment().tz() 时间不会转换,而是显示我的本地客户时间。 当我手动输入IANA时区ID时,会发生转换(尽管仍然不准确)。 有什么想法为什么不能从data-attribute提供的值起作用?

这(排序)的工作原理:

$(function(){
    $('.location').each(function() {
        var timeZone = $(this).data('timezoneid');
        var now = moment().tz('Africa/Tripoli').format("MM/DD/YYYY hh:mm");
        $(this).append( now );
    });
});

不会(显示本地时间):

的HTML

<span class="location" data-timeZoneID="Africa/Tripoli">Tripoli: </span><br />
<span class="location" data-timeZoneID="England/London">London: </span>

JS

$(function(){
    $('.location').each(function() {
        var timeZone = $(this).data('timezoneid');
        var now = moment().tz("'" + timeZone + "'").format("MM/DD/YYYY hh:mm");
        $(this).append( now );
    });
});

jsFiddle

链接

很难理解您的问题所在,但考虑到“逐步”列表,我将执行以下操作:

$(function(){
    $('.location').each(function() {
        var timeZone = $(this).data('timeZoneID');
        var now = moment().tz(timeZone).format('HH:MM');
        $(this).append( now );
    });
});

演示

这是一个有效的JSFiddle

http://jsfiddle.net/93pEd/1/

注意我所做的2个更改:

 - London is Europe/London instead of England/London
 - the format is HH:mm instead of HH:MM

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM