当我尝试将数据导出到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.
答案 0 :(得分:0)
我知道这不是最佳做法,但我只是更改了日期:
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);
}
答案 1 :(得分:0)
这是一个很好的技巧:
var dt = new Date('2017-07-17')
dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset())
console.log(dt)
这将完全忽略用户的时区。
有关getTimezoneOffset()
的更多信息,请@ MDN:getTimezoneOffset
。