Angular: импорт дат из разных часовых поясов из Excel - PullRequest
0 голосов
/ 14 марта 2019

Я использую 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 формат. Я использую моменты для форматирования. Я не понимаю, почему он читает дату как предыдущий день и как с ней обращаться, чтобы часовой пояс не влиял на дату? Есть предложения?

...