gpt4 book ai didi

java - Apache POI 事件用户模型将时间戳值读取为 double 值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:52 27 4
gpt4 key购买 nike

我有一个 excel 文件,其中有一个用值填充的时间戳列2011 年 5 月 31 日下午 5:49:44我正在使用 POI 事件模型阅读此 excel 文件。 (实现与 http://poi.apache.org/spreadsheet/how-to.html#sxssf 中解释的相同 - “XSSF 和 SAX(事件 API)”)上面的时间戳值读取为40694.74287037037,我不知道为什么。我无法将此值格式化回日期时间格式。

我该如何解决这个问题?

最佳答案

这完全符合预期。 Microsoft Excel 文件格式将所有日期时间存储为自 1900/01/01 或 1904/01/01 以来的小数日期,具体取决于文件中设置的标志(1904 日期窗口标志)。因此,当您读回原始值时,1900 年 1 月 1 日下午 6 点应该返回为 1.75

如果您使用的是 UserModel 代码,则可以使用大量帮助程序将其转换回日期。在事件模型中,您必须自己发现(通过检查格式),然后自己调用转换。

您需要的类(class)是 DateUtil ,尤其是像 DateUtil.getJavaDate(double) 这样的方法

Apache POI 提供了很多这样的例子,我建议你回顾一下类似 XLS2CSVmra 的东西获取指南。

此外,如果您只想要时间,而不考虑当天,请取非整数余数,这就是您一天中的时间部分。对于当前小时(向下舍入),您可以执行以下操作:

double date = cell.getNumericCellValue(); // 1.76
double time = date - ((int)date);
int hours = time * 24; // 18

关于java - Apache POI 事件用户模型将时间戳值读取为 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18845383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com