Javascript 在两个日期之间搜索JSON

Javascript 在两个日期之间搜索JSON,javascript,json,angular,datetime,Javascript,Json,Angular,Datetime,我有一个JSON对象,如果我输入一个有两个日期的角度表单,需要搜索它 我试着用一个日期角表单控件进行搜索 模板代码: 如果我想传递两个日期并搜索介于传递的日期和特定时间戳之间的所有JSON值,我需要做什么?如果需要在javascript中处理日期,我强烈建议使用。如果您编写的是真实世界的应用程序,而不是理论练习,则可能会出现这种情况。Javascript日期杂乱无章,令人讨厌,您可以看到,为了提取日期,您已经在做一些丑陋的事情,如.toISOString.split'T'[0]。在momentj

我有一个JSON对象,如果我输入一个有两个日期的角度表单,需要搜索它

我试着用一个日期角表单控件进行搜索

模板代码:


如果我想传递两个日期并搜索介于传递的日期和特定时间戳之间的所有JSON值,我需要做什么?

如果需要在javascript中处理日期,我强烈建议使用。如果您编写的是真实世界的应用程序,而不是理论练习,则可能会出现这种情况。Javascript日期杂乱无章,令人讨厌,您可以看到,为了提取日期,您已经在做一些丑陋的事情,如.toISOString.split'T'[0]。在momentjs中,您可以执行类似于momentqueryInvoiceDate1.isBeforeMenti.timestamp&&momentqueryInvoiceDate2.isAftermomenti.timestamp的操作,以按日期范围过滤发票。这将使您能够编写更具可读性和可维护性的代码


另一方面,ISO字符串的优点在于,它们可以通过字典顺序的字母排序进行比较,因此“2018-09-01”就是“2018-08-01”和“2018-09-03”。因此,您可以使用当前从ISO字符串中提取日期的方法,只需使用>=即可。您尝试了什么?请查看帮助页面,了解如何发布的指导原则,以及本网站设计用于处理的问题。添加您尝试的MVE是有帮助的,也是必需的。另外,请检查拼写/打字/大写。谢谢欢迎来到SO。我希望你能找到你的答案。非常感谢。这真的很有帮助。谢谢。
<div>
   <div class="card w-75">
      <div class="card-body">
          <h5 class="card-title">Invoice summary</h5>
          <hr>
          <p class="card-text">Total revenue made by this venue: <strong> 
   {{totalRevenue}}</strong></p>
          <p *ngIf="invoicesFiltered === true" class="card-text">Revenue 
made on <strong>{{inputInvoiceDate}}</strong> is <strong> 
{{filteredTotalRevenue}}</strong></p>
      </div>
  </div>

  <div>
      <div style="float:left;">
          <label for="queryInvoiceDate">Start Date:</label>
          <input
            #queryInvoiceDate
            (change)="filterInvoice(queryInvoiceDate.valueAsDate)"
            type="date"
            class="form-control"
            style="width:100%">
      </div>

      <table class="table table-striped" [mfData]="filteredInvoices" #mf="mfDataTable" [mfRowsOnPage]="10">
          <thead>
            <tr>
              <th>Advertiser Acct Balance</th>
              <th>Service Fee Amt</th>
              <th>Target Amt for Venue</th>
              <th>Venue Acct Balance</th>
            </tr>
          </thead>
          <tbody>
            <tr *ngFor="let invoice of mf.data">
              <td>{{invoice.acntbalances}}</td>
              <td>{{invoice.servicefeeamount}}</td>
              <td>{{invoice.targetamount}}</td>
              <td>{{invoice.targetbalance}}</td>
            </tr>
          </tbody>
          <tfoot>
            <tr>
                <td colspan="4">
                    <mfBootstrapPaginator [rowsOnPageSet]="[10,15,20]"></mfBootstrapPaginator>
                </td>
            </tr>
          </tfoot>
      </table>
  </div>
filterInvoice(queryInvoiceDate: any) {
    this.inputInvoiceDate = queryInvoiceDate.toISOString().split('T')[0];
    this.filteredInvoices = (queryInvoiceDate) ?
    this.invoices.filter(i => 
       i.timestamp.includes(queryInvoiceDate.toISOString().split('T')[0])) : this.invoices;
    console.log(queryInvoiceDate.toISOString());
    this.filteredTotalRevenue = this.filteredInvoices.reduce((sum, invoice) => {
  return sum + invoice.targetamount; }, 0);
}