【问题标题】:Set time zone of hh:mm picker with moment.js使用 moment.js 设置 hh:mm 选择器的时区
【发布时间】:2017-02-11 10:57:22
【问题描述】:

我正在尝试配置小时:分钟时间选择器。我正在使用很棒的MTR Datepicker from Gihub,除了我无法更改时区之外,它正在工作。

我需要的是用户从下拉列表中选择他的时区,例如“欧洲/伦敦”。然后脚本抓取时区的偏移值(+60 分钟或 3600 秒)。

使用该时区偏移量,我想以 15m 的增量显示可供选择的分钟,以供将来使用。

因此,如果用户时间是下午 1:14,我希望时间 01:15

问题

如果我在浏览器中打开脚本,MTR Datepicker 库默认设置为 my 本地时间(格林威治标准时间 +02:00)。

因此,如果 GMT 是上午 12:00,而我的当地时间是下午 2:00,我会得到从 02:15

但我希望能够选择一个新时区,例如欧洲/伦敦(格林威治标准时间 +01:00)并显示从 01:15 开始的时间......你明白我的意思。

我不知道如何覆盖这种行为。

这里是库(1856 行):MTR Datepicker.js Gitub

其中的某些内容正在检测我的计算机本地时区,我想用用户选择的时区覆盖它。

这是我页面上的配置代码...如您所见,我将 unix 时间戳 (valueOf()) 传递到时间戳配置选项中,但该库默认检测并使用我的本地时间。

<script>
    var m = moment().utcOffset(); // new time now
    var config = {
        target: 'timePicker',
        timestamp: m.valueOf(),
        future: true,
        minutes: {
            min: 0,
            max: 45,
            step: 15,
        },
    };
    var myDatepicker = new MtrDatepicker(config);

    $( document ).ready(function() {
        $("#resultTime").html(myDatepicker.format('H:mm A'));
    });

    myDatepicker.onChange('time', function() {
        $("#resultTime").html(myDatepicker.format('H:mm A'));
    });
</script>

如何根据时区偏移而不是用户本地时间更改显示的小时和分钟?

【问题讨论】:

  • 如果有人需要这里有一个 jsfiddle 可以玩:jsfiddle.net/eq0k5ovr
  • 好的,谢谢!我尝试了很长时间才能让小提琴正常工作。
  • 如果您传递 future: true 参数,日期选择器将始终阻止您选择过去的日期/时间。也许这是导致您的问题的原因,因此请尝试将其更改为 false。无论如何,如果日期选择器支持时区会很好,所以如果你还有任何问题,我会考虑实现这样的功能。
  • 嗨 valkirilov,您对这个问题的回答让我感到非常荣幸和印象深刻!我真的很喜欢这个日期选择器,时区会很棒。如果可能有一个配置选项,您可以将其设置为 GMT 的偏移量,这将是有用的。因此,如果我在巴黎,我将配置选项设置为 120 分钟的偏移量,然后我就得到了我的时区。
  • 一些背景知识:我正在从 PHP 中的 DateTime 对象获取我的时区偏移量,我需要将日期选择器硬设置为用户选择的特定时区。

标签: javascript jquery date timezone momentjs


【解决方案1】:

时区支持已经实现,最近我们推出了一些错误修复和改进。 有关如何使用它们并将插件与您的设置集成的更多信息,您可以依赖docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多