通过ExcelJS读取excel文件中的日期给出了错误的日期



我在EST时区工作。当我在ExcelJS的帮助下阅读Excel文件中的日期时。Excel中的日期为3/31/2021。但检索到的日期与Tue Mar 30 2021 20:00:00 GMT-0400 (Eastern Daylight Time)相同。因此,它将给定日期视为UTC,并将其转换为我当前的时区。我不想把它转换成UTC,然后再转换成我当前的时区。我想读取EXCEL文件中的直接日期。

我在文档中的某个地方看到了dateUTC:false。这用于写入文件。但是当我阅读excel文件时,该怎么做呢。有什么帮助吗?

首先,我使用Date.parse()将GMT日期转换为毫秒,并将GMT与当前时区(在我的案例中为亚洲/塔什干+5(之间的时差添加到结果值中,然后使用新的日期(毫秒(将其转换回常规日期

let m = Date.parse(gmtDate); //GMT date in milliseconds
let mTZ = m + 18000000; //Asia/Tashkent +5 time zone. 18.000.000 = 5 hours in milliseconds.
let currentDate = new Date(mTZ);

我最近遇到了这个问题,不得不做同样的事情:

  1. 以UTC形式从excel中读取
  2. 然后转换到我想要的数据时区

我从你的问题中知道你不想这么做,所以也许这个计划是可以依靠的。

我的代码是这样的:

const moment = require('moment-timezone')
let utc = moment.utc(excelCellStr, 'M/D/YY hh:mm A')
let t = moment().tz('America/New_York')
t.year(utc.year())
t.month(utc.month())
t.date(utc.date())
t.hour(utc.hour())
t.minute(utc.minute())
t.second(utc.second())
excelCellStr = t.format()

我不确定是否有避免这种情况的设置。我们也在使用exceljs。

最新更新