Angular-Ui Bootstrap Popup DatePicker 的 ngModelOptions 的时区 属性
Timezone Property of ngModelOptions of Angular-Ui Bootstrap Popup DatePicker
我们在我们的应用程序中使用 Angular-Ui Bootstrap 弹出式 DatePicker 并且已经 运行 进入 issues such as this 前一天被选中到用户实际选择的那个。
我们将选择器的日期设置为来自服务器的 UTC (json)。虽然,Javascript 日期对象是本地的,因此不匹配。
作为解决方案(显然),他们添加了一个 ngModelOptions,我看到它的用法如下:
var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100)
带有标记
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: timezone}" />
但是那个选择器的 doco 并没有真正解释它是如何 uses/consumes 那个时区 属性 的。我能找到的最接近的解释是 ngModelOptions 本身的 doco,它说:
You can specify the timezone that date/time input directives expect by
providing its name in the timezone property.
我希望有人能简要解释一下该选择器如何使用 ngModelOptions 指令的时区 属性 以及我是否应该将其设置为 utc 或将浏览器偏移量设置为 utc。
谢谢
对于那些仍在使用 Angular-UI Bootstrap 并寻找答案的人:
您可以使用 ng-model 选项,例如 ng-model-options="{timezone: 'UTC'}"
。这将转换日期对象,以便该时区的时间为 00:00。
如果没有此设置,dateModel 值将是浏览器本地时间的午夜。我的浏览器是 BST (UTC+1),所以默认日期是:Sat May 07 2022 00:00:00 GMT+0100 (British Summer Time)
,如果然后使用调用 dateModel.toISOString()
这将转换为 `'2022-05-06T23:00:00 .000Z'.
要获取表示 UTC 午夜的日期对象,请按如下所示设置选项:
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: 'UTC'}" />
现在,当我 select 一个日期并在我的浏览器中查看它时,它显示为 Sat May 07 2022 01:00:00 GMT+0100 (British Summer Time)
,因此调用 dateModel.toISOString()
得到 '2022-05-07T00:00:00.000Z'
(这是我发送到服务器的内容)。
我们在我们的应用程序中使用 Angular-Ui Bootstrap 弹出式 DatePicker 并且已经 运行 进入 issues such as this 前一天被选中到用户实际选择的那个。
我们将选择器的日期设置为来自服务器的 UTC (json)。虽然,Javascript 日期对象是本地的,因此不匹配。
作为解决方案(显然),他们添加了一个 ngModelOptions,我看到它的用法如下:
var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100)
带有标记
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: timezone}" />
但是那个选择器的 doco 并没有真正解释它是如何 uses/consumes 那个时区 属性 的。我能找到的最接近的解释是 ngModelOptions 本身的 doco,它说:
You can specify the timezone that date/time input directives expect by providing its name in the timezone property.
我希望有人能简要解释一下该选择器如何使用 ngModelOptions 指令的时区 属性 以及我是否应该将其设置为 utc 或将浏览器偏移量设置为 utc。
谢谢
对于那些仍在使用 Angular-UI Bootstrap 并寻找答案的人:
您可以使用 ng-model 选项,例如 ng-model-options="{timezone: 'UTC'}"
。这将转换日期对象,以便该时区的时间为 00:00。
如果没有此设置,dateModel 值将是浏览器本地时间的午夜。我的浏览器是 BST (UTC+1),所以默认日期是:Sat May 07 2022 00:00:00 GMT+0100 (British Summer Time)
,如果然后使用调用 dateModel.toISOString()
这将转换为 `'2022-05-06T23:00:00 .000Z'.
要获取表示 UTC 午夜的日期对象,请按如下所示设置选项:
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: 'UTC'}" />
现在,当我 select 一个日期并在我的浏览器中查看它时,它显示为 Sat May 07 2022 01:00:00 GMT+0100 (British Summer Time)
,因此调用 dateModel.toISOString()
得到 '2022-05-07T00:00:00.000Z'
(这是我发送到服务器的内容)。