Angular-UI从ui-date的日期中减去一天

时间:2013-03-05 14:48:38

标签: jquery-ui angularjs angular-ui

情况 我想使用ui-date在我的应用中设置/编辑日期。我使用最新的稳定版本的angular,angular-ui,jquery-ui等。

问题 使用日期选择器选择日期后,我模型中的日期将等于所选日期减去1天。它也会被发送到我的服务器并以这种方式保存在我的数据库中。

the plunker http://plnkr.co/edit/Ft14Wa?p=preview 最初,datepicker输入中的日期和模型中的日期是相同的。选择日期后,他们会有所不同。

问题 (g)这里有什么(wr)???

4 个答案:

答案 0 :(得分:9)

ui-date期望您的模型成为实际的日期对象。在你的情况下,它是一个字符串。如果您看一下控制台,您会看到angularUI实际上会告诉您这一点。然后它建议你添加额外的ui-date-format标签,其中包含指定的日期格式,日期字符串将被解析为日期对象。

长话短说,您需要调整输入:

<input ui-date="{dateFormat: 'yy-mm-dd'}" ui-date-format="yy-mm-dd" ng-model="customer.contract_end_date"></input>

Working plunker

答案 1 :(得分:4)

这解决了我的问题。 angularjs使用考虑小时时间的默认时区。将ng-model的时区选项设置为UTC清除小时时间......

performSelector:withObject:afterDelay:

答案 2 :(得分:3)

问题是当解析在datepicker上选择的日期时,angular正在使用其默认时区。要解决此问题,您可以使用接受“timezone”参数的ng-model-options指令。

<input type="text" ng-model-options="{timezone:'UTC'}" ... >

答案 3 :(得分:0)

我将日期格式设置为dd-mm-yyyy作为我的要求。然后将date-type设置为string。

<input type="text" class="form-control col-xs-9"
                        data-date-format="dd-MM-yyyy" data-autoclose="1"
                        ng-model="modelName"
                        date-type="string" bs-datepicker required>