2

当我尝试以角度将数据导出到 excel 时,数据库中的日期在“x”时区,我正在从“y”时区导出数据。数据导出到 Excel 时,日期位于“y”时区。但我想保持它与数据库中的日期相同,即仅带有“x”时区的日期。

我期望输出为,Mar 26 2014 12:00 AM但我收到了这个2014-03-25 23:00:00.000+0000

private export(records: any[]) {
    // get the export fields
    let exportFields = this.gridConfig.columnDefinitions.map(function (colDef) {
      if(false == colDef.exportField) {
        return;
      }
      return colDef.field;
    });
    let filtered = this.gridOptions.api.getSelectedRows().map(record => {
      return _.pick(this.flatten(record), exportFields);
    });

    const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(filtered);

    let range = XLSX.utils.decode_range(ws['!ref']);
    for(let c = range.s.c; c <= range.e.c; ++c) {
      let address = XLSX.utils.encode_col(c) + "1"; // <-- first row, column number C
      if(!ws[address]) continue;
      ws[address].v = this.findHeaderNameByField(ws[address].v);
    }

    /* generate workbook and add the worksheet */
    const wb: XLSX.WorkBook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'data');

    /* save to file */
    XLSX.writeFile(wb, 'Export.xlsx');
  }



When I debugged I found that data from api is only receiving as time with 'y' zone.
4

1 回答 1

-1

我知道这不是最佳做法,但我只是更改了日期:

const date = <Date>cell.value;
if (date) {
    const ONE_MINUTE = 60 * 1000;
    const ticks = date.getTime() - date.getTimezoneOffset() * ONE_MINUTE;
    cell.value = new Date(ticks);
}
于 2020-05-31T08:49:03.347 回答