【问题标题】:Error converting selected date - Angular 8转换所选日期时出错 - Angular 8
【发布时间】:2019-09-16 22:00:27
【问题描述】:

我正在两个日期之间制作过滤器,开始日期结束日期,过滤器工作完美,它带来了数据但它没有带来完整的数据和这是因为在选择日期并将它们转换为格式时,它会转换它们但还剩一天。

这样我正在转换日期:

 FiltrarPorFechas(incial, final) {
    this.ListaUsuarios = [];
    const IniDate = new Date(incial);
    const EndDate = new Date(final);
}

将图像与调试和转换相关联:

如图所示,初始日期和最终日期到达方法 "2019-07-10""2019-07-31" 但是当如图所示,我尝试转换它们,使它们减少一天。

我试过用moment formatDate还是不行,我不明白为什么也不想加一天。

有人可以帮助我吗?

【问题讨论】:

  • 预期输出是什么?
  • 我希望它们在我选择它们时到达,如果我选择 10,当我转换它时,它是 10 而不是 9
  • 你可以试试moment(new Date(incial)).format('YYYY-MM-DD HH:mm:ss') 吗?
  • 等一下我做测试
  • 我怀疑它与时区有关,让我们看看,

标签: javascript angular datetime


【解决方案1】:

您可能对时区有疑问。您可以使用moment.js 或普通的Date() 对象将时间重置为00:00:00

现在,由于您的目标是比较时间,您可以使用moment.js 提供的diff() 来实现此目的。请在下面找到示例代码

(function() {
  initial = '2019-07-09';
  initial_formatted = moment(new Date(`${initial} 00:00:00`));
  final = '2019-07-31';
  final_formatterd = moment(new Date(`${final} 00:00:00`));
  console.log(initial_formatted.diff(final_formatterd, 'days'));

  // moment(new Date(`${incial} 00:00:00`)).format('YYYY-MM-DD HH:mm:ss');
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>

更多信息

Moment diff()

Date Object set() method

【讨论】:

    猜你喜欢
    • 2016-12-14
    • 2013-08-29
    • 2014-06-18
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多