日期奇怪的时区 (GMT+0009)
Date weird timezone (GMT+0009)
我使用 ExcelJS 将 Excel 解析为 JavaScript 对象。
这是一个 excel 示例:
如您所见,我必须涵盖日期和时间的多种格式。对于约会我没有问题。但是当涉及到小时时,具有“12:30”和“15:00”值的单元格将作为 javascript 日期对象返回。所以我检查它是日期还是字符串,我想获取字符串值(10H10 和 18h30 单元格可以,因为它们被视为字符串而不是 15:00 和 12:30)。
当使用 VSCode 调试工具时,我可以看到我有这个日期:
'Sat Dec 30 1899 12:39:21 GMT+0009 (Central European Standard Time)'
'Sat Dec 30 1899 15:09:21 GMT+0009 (Central European Standard Time)'
我想要的是一种将此结果转换为字符串“12:30”或“15:30”的方法。我使用时刻和日期函数尝试了很多事情,例如 .toUTCString()
、.toGMTString()
...
我假设你有一个 JS Date 对象。
建议 Intl.DateTimeFormat 为用户格式化日期 and/or 次。
但是既然你想要一个特定的格式,那么自己格式化可能会更容易。
但是时间不在正确的时区。您首先必须将其转换为正确的时区。除了正确的时区是 UTC,我们可以在不进行任何转换的情况下访问有关日期时间的 UTC 表示的组件的信息。
[
dt.getUTCHours(),
dt.getUTCMinutes().toString().padStart(2, '0'),
].join(":")
我使用 ExcelJS 将 Excel 解析为 JavaScript 对象。
这是一个 excel 示例:
如您所见,我必须涵盖日期和时间的多种格式。对于约会我没有问题。但是当涉及到小时时,具有“12:30”和“15:00”值的单元格将作为 javascript 日期对象返回。所以我检查它是日期还是字符串,我想获取字符串值(10H10 和 18h30 单元格可以,因为它们被视为字符串而不是 15:00 和 12:30)。
当使用 VSCode 调试工具时,我可以看到我有这个日期:
'Sat Dec 30 1899 12:39:21 GMT+0009 (Central European Standard Time)'
'Sat Dec 30 1899 15:09:21 GMT+0009 (Central European Standard Time)'
我想要的是一种将此结果转换为字符串“12:30”或“15:30”的方法。我使用时刻和日期函数尝试了很多事情,例如 .toUTCString()
、.toGMTString()
...
我假设你有一个 JS Date 对象。
建议Intl.DateTimeFormat 为用户格式化日期 and/or 次。
但是既然你想要一个特定的格式,那么自己格式化可能会更容易。
但是时间不在正确的时区。您首先必须将其转换为正确的时区。除了正确的时区是 UTC,我们可以在不进行任何转换的情况下访问有关日期时间的 UTC 表示的组件的信息。
[
dt.getUTCHours(),
dt.getUTCMinutes().toString().padStart(2, '0'),
].join(":")