【问题标题】:Date Picker for Angular that Ignores Local Timezone忽略本地时区的 Angular 日期选择器
【发布时间】:2016-12-22 08:54:40
【问题描述】:

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

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

例子:

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

开启UTC-12:00 22-December-2016 已禁用,因此最小值为23-December-2016

开启UTC+08:00 23-December-2016 已禁用,因此最小值为24-December-2016

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

是否有我遗漏的任何东西或任何其他只会显示给它的日历?

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

编辑 2:我们已经使用 momentjsnode server 生成了日期时间。 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),但是插件坏了。

【问题讨论】:

  • 从服务器获取今天的日期并将其设置为datepicker控件的默认日期。
  • 问题是我们已经使用momentjsnode server 生成时间。 var serverTime = moment().utcOffset(8); 只是 angular-strap 以一种奇怪的方式处理我们提供的日期。
  • 您想在日期选择器或 UTC 中选择本地日期/时间?
  • 添加data-timezone="utc" 也无济于事
  • 但是对于 -12:00 的用户来说, 12 月 22 日。

标签: javascript angularjs date datetime


【解决方案1】:

我们做了一些修改。我们 fork 插件并更改了处理 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) 的问题是受当地时区影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2020-05-03
    • 2017-03-03
    相关资源
    最近更新 更多