在moments.js

时间:2015-08-21 18:32:48

标签: timezone momentjs

我以下列方式包含moments.js

<script src="../static/js/moment-timezone-full.js"></script>
<script>
    $('.select_timezone').timezones();
</script>

然后我在html中将时区选择提供给我的用户

<div class="row">
    <div class="col-lg-4">
        <select class="select_timezone" name="select_timezone"></select>
    </div>
</div>

我的问题是如何选择默认时区?我看到一个人可以用

做到这一点
moment.tz.setDefault(String);

但我不明白这在我的设置中会如何起作用?

编辑:我的实现只是遵循这个例子......

http://www.jqueryscript.net/time-clock/Easy-Timezone-Picker-with-jQuery-Moment-js-Timezones.html

真的没有人知道解决方案吗? 卡尔

编辑:我应该澄清为什么moment.tz.setDefault不起作用。当我添加行

moment.tz.setDefault('America/Los_Angeles');

我收到了javascript错误

Uncaught TypeError: Cannot read property 'setDefault' of undefined

我包含了烧瓶大型教程中所解释的时刻,意思是我

from flask.ext.moment import Moment
...
moment = Moment()
...
moment.init_app(app)

在我的html模板中我做了

{% block scripts %}
{{ moment.include_moment() }}
{% endblock %}

时刻时区包含在js文件中,如上所示。我忘了什么吗? 我只是想设置选择的默认时区

2 个答案:

答案 0 :(得分:3)

在查看您发布的内容之后,看起来您正在使用来自https://github.com/firstandthird/timezones的jquery插件,当我查看代码时,它使用旧版本的moment.js(版本2.8.3) )见https://github.com/firstandthird/timezones/blob/master/dist/timezones.full.js

它也使用了旧版本的moment-timezone(它在timezones.full.js文件的底部,版本0.2.4),而moment.tz.setDefault()并没有。添加到更高版本。截至目前最近的是0.4.0。因此,我建议将您自己的文件与最新版本混搭,然后在您的系统上再试一次,看它是否有效。

更新:

所以,我看着你的小提琴,并在your fiddle允许

更新它
moment.tz.setDefault("America/New_York");
$('.select_timezone').timezones();

用我自己的mashed up.js,moment-timezone.js和jquery插件代码,它运行得很好。基本上所有那些moment-timezone-full.js文件正在做的是使用jquery插件代码将moment.js和moment-timezone.js混搭。 (它被列为外部库之一,您也可以在https://gist.github.com/iron-man/deedd9efe988318d842a找到它。我确实注意到它只会在列表中为该偏移量而不是您指定的实际值中选取第一个时区,但这对于moment-timezone.js库来说是一个更大的问题,而且超出了这个问题的范围。

答案 1 :(得分:1)

默认情况下,它会显示查看该人的时区,但您可以通过专门定义它来覆盖该时区。 在您的示例中,您可以执行以下操作:

<script src="../static/js/moment-timezone-full.js"></script>
<script>
  moment.tz.setDefault("America/New_York");
  $('.select_timezone').timezones();
</script>