【问题标题】:Date weird timezone (GMT+0009)日期奇怪的时区 (GMT+0009)
【发布时间】:2021-02-19 18:01:10
【问题描述】:

我使用 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() 之类的时刻和日期函数尝试了很多事情...

【问题讨论】:

    标签: javascript momentjs exceljs


    【解决方案1】:

    我假设你有一个 JS Date 对象。

    建议使用Intl.DateTimeFormat 为用户格式化日期和/或时间。

    但由于您需要特定格式,因此自己格式化可能更容易。

    但时间不在正确的时区。您首先必须将其转换为正确的时区。除了正确的时区是 UTC,我们可以访问有关日期时间的 UTC 表示的组件的信息,而无需进行任何转换。

    [
       dt.getUTCHours(),
       dt.getUTCMinutes().toString().padStart(2, '0'),
    ].join(":")
    

    【讨论】:

    • 但是,例如,如果我有一个值为 15:32 的单元格怎么办。将增加 9 分钟,所以我将有 15:41,但使用您的方法,结果将是 15:40 而不是 15:30
    • 哦,我明白了。固定。
    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2011-06-01
    • 2011-10-25
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多