Я использую https://github.com/SheetJS/js-xlsx/ с Angular 7 для импорта файла Excel и выполняю некоторую обработку, прежде чем отправить его на сервер. Моя функция для чтения данных Excel:
private readFile(file: any, dataType: string) {
let fileReader: FileReader = new FileReader();
fileReader.onload = (e) => {
this.arrayBuffer = fileReader.result;
let data = new Uint8Array(this.arrayBuffer);
let arr = new Array();
for (let i = 0; i !== data.length; ++i) { arr[i] = String.fromCharCode(data[i]); }
let bstr = arr.join('');
let workbook = XLSX.read(bstr, {type: 'binary', cellDates: true});
let firstSheetName = workbook.SheetNames[0];
let worksheet = workbook.Sheets[firstSheetName];
let jsonData = XLSX.utils.sheet_to_json(worksheet);
this.mapExcelModal.show(jsonData);
};
fileReader.readAsArrayBuffer(file);
}
У меня проблема с чтением данных, которые содержат даты, если они находятся в другом часовом поясе. Например, я ввожу данные в файл Excel как 28/02/2019, и эта дата читается как Wed Feb 27 2019 23:59:20 GMT+0200 (Israel Standard Time)
.
Если я пытаюсь импортировать его с локального компьютера, я получаю Thu Feb 28 2019 00:00:00 GMT+0100 (Central European Standard Time)
. Мне нужно просто прочитать даты независимо от часового пояса, мне нужно проанализировать его как 2019-02-28T00:00:00Z
формат. Я использую моменты для форматирования. Я не понимаю, почему он читает дату как предыдущий день и как с ней обращаться, чтобы часовой пояс не влиял на дату? Есть предложения?