【问题标题】:date-range picker picks date of the day before日期范围选择器选择前一天的日期
【发布时间】:2020-06-11 10:43:28
【问题描述】:

我正在使用角度日期范围选择器来选择一个日期,这是我的 html 的样子:

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

现在当我选择日历弹出的日期时,它显然选择了日期,但是当它发送到后端时,它实际上是前一天的日期。即,如果我选择28-02-2020,它将发送27-02-2020。另外,我只想让日期选择器只发送日期,目前它发送的内容如下:

2020-02-27T19:00:00.000Z 

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

【问题讨论】:

标签: angularjs datepicker daterangepicker


【解决方案1】:

使用 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>

【讨论】:

    【解决方案2】:

    您可以使用以下方式将您的时区添加到日期,

    var d = new Date('yourDate');
    d.setMinutes( d.getMinutes() + d.getTimezoneOffset() );
    
    'd' should be the correct date
    

    或者

    你也可以像'Your Date'.toISOString()一样检查

    【讨论】:

    • 我仍然得到大一天的日期。问题仍然存在。我选择了 2020-03-12,它发送 2020-03-11。
    • 您能否在 stackblitz 中提供您的代码,以便更容易调试。 @萨尼
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多