忽略本地时区的角度的日期选择器

时间:2016-12-22 08:54:40

标签: javascript angularjs date datetime

是否有任何日期选择器只显示提供给它的内容并忽略当地时区?

我们当前正在使用angular-strap的日期选择器,并在更改计算机的本地时区时进行data-min-date更改。提供的data-min-date只是一个固定的日期,但不知何故,日期选择器会受到当地时区的影响。

示例:

提供日期:2016-12-23T16:33:03+08:00 ISO8601 Format

UTC-12:00 22-December-2016已停用,因此最低为23-December-2016

UTC+08:00 23-December-2016已停用,因此最低为24-December-2016

不确定哪一个是预期日期,但预期结果应该是自提供固定日期以来不会有任何变化。

我有什么遗漏或任何其他日历只显示给它的东西吗?

编辑1 :通过更改计算机的本地时区来测试日期功能是否合法?是否与当地或自然位于该时区的情况相同或不同?

编辑2 :我们已使用node servermomentjs生成了日期时间。 var serverTime = moment().utcOffset(8);只是angular-strap以奇怪的方式处理我们提供的日期。

编辑3 :添加属性data-timezone="utc"也无济于事。

编辑4 :我们发现该插件使用date = new Date(value);,其中value是我们传递的日期。它返回类似Thu Dec 22 2016 21:29:54 GMT-1200 (Local Standard Time)的内容,它清楚地使用了本地时区。并且没有条件检查是否提供了timezone="utc"。我们还尝试直接分配date = Thu Dec 22 2016 21:29:54 GMT-1200 (Local Standard Time)但插件中断了。

1 个答案:

答案 0 :(得分:0)

我们做了一个黑客。我们分叉插件并更改了处理min-date的代码。

可以找到更改历史here。我们添加了片段:

var a = new Date(value); // value - date we are passing
var b = a.getTime() + (a.getTimezoneOffset() * 60000); // no idea what this is
date = new Date(b + (3600000*(8))); // the 8 is the timezone we want

new Date(value)的问题在于它受当地时区的影响。