日期范围选择器选取前一天的日期。

3

我正在使用Angular日期范围选择器来选择一个日期,以下是我的HTML代码:

<input date-range-picker ng-model="model" options="{singleDatePicker: true}"
       class="form-control date-picker" type="text"/>

现在当我选择日历弹出框上的日期时,它似乎会选择该日期,但是当它被发送到后端时,实际上是前一天的日期。例如,如果我选择2020年2月28日,它将发送2020年2月27日。此外,我只想让日期选择器仅发送日期,目前它发送像这样的内容:

2020-02-27T19:00:00.000Z 

我在这里做错了什么?有什么帮助吗?

3
好的,我会尽力进行翻译。这句话的意思是:看起来是时区问题。你有检查过选项/时区设置吗? - Bill P
AngularJS中没有内置的日期范围选择器。您能指出您正在使用哪一个吗? - Julien
1
https://dev59.com/wWkw5IYBdhLWcg3w_fiJ#41125840 - Praveen Soni
1
https://dev59.com/Dmsz5IYBdhLWcg3w8Mmr#31732581 - Praveen Soni
2个回答

4

使用AngularJS时,日期选择器需要将ng-model-options的时区设置为UTC:

<input type="date" ng-model="pickedDate" ng-model-options="{timezone: 'utc'}">

更多信息请参见

演示

<script src="//unpkg.com/angular/angular.js"></script>

<body ng-app>
    <h1>Hello Plunker!</h1>
    <input type="date" ng-model="pickedDate" ng-model-options="{timezone: 'utc'}">
    <br>
    pickedDate={{pickedDate}}
</body>


1
您可以使用以下方式将时区添加到日期中:
var d = new Date('yourDate');
d.setMinutes( d.getMinutes() + d.getTimezoneOffset() );

'd' should be the correct date

或者

您也可以通过简单地执行'您的日期'.toISOString()来进行检查。


我仍然得到比实际日期早一天的日期。问题仍然存在。我选择了2020年3月12日,但它发送的是2020年3月11日。 - Saani
你能否在 StackBlitz 上提供你的代码,这样调试起来会更容易。@Saani - Pushprajsinh Chudasama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接