Angular UI DatePicker调整时区

Bri*_*ian 47 timezone datepicker angularjs angular-ui

我有一个日期存储为SQL Server中的日期.当我在SQL中查询时,日期显示为2014年4月24日.那是正确的.日期以UTC格式正确地转移到客户端.要编辑该日期,我们使用的是Angular UI DatePicker.DatePicker根据我的本地时区调整该日期,因此总是关闭一天.

我可以看到它正在发生.如果我们正在编辑DateTime而不是Date,那么调整时区是正确的.但是,在这种情况下,我只有一个日期,所以我不关心时区,我只想编辑数据库中的日期.

我可以验证它是否正在调整时区.如果我将Windows机器上的时区更改为UTC,则DatePicker会显示正确的日期.

所以,问题是,有没有办法告诉DatePicker关闭时区调整,只管理UTC格式的日期,以便它可以使用SQL Date而不是SQL Datetime?

web*_*ste 42

我刚才有一个非常类似的问题:我想在服务器端存储本地日期(即只是yyyy-mm-dd而没有时间/时间信息)但是由于Angular Bootstrap Datepicker使用JavaScript Date对象,这是不可能的(它在您自己发现时序列化为JSON中的UTC日期时间字符串).

我用这个指令解决了这个问题:https://gist.github.com/weberste/354a3f0a9ea58e0ea0de

基本上,每当在日期选择器上选择日期时,我都会重新格式化该值(此值,yyyy-mm-dd格式化字符串,将存储在模型上),并且每当访问模型以填充视图时,我需要再次将其包装在Date对象中,以便datepicker正确处理它.


Tho*_*mas 32

解决方案在这里找到:https://github.com/angular-ui/bootstrap/issues/4837#issuecomment-203284205

时区问题已修复.

您可以使用:

ng-model-options="{timezone: 'utc'}"

获取没有时区计算的日期选择器.

编辑:这个解决方案从版本2.x开始不起作用,但是在那之前它完全没问题.我找不到解决方法,仍然使用版本1.3.3.

编辑2:正如SébastienDeprez在下面的评论中指出的那样,这在2.3.1版本中得到了修复.我只是测试了它,效果很好.

<input
 uib-datepicker-popup
 ng-model="$ctrl.myModel"
 ng-model-options="{timezone: 'utc'}">
Run Code Online (Sandbox Code Playgroud)