【发布时间】: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