Java – 从Excel文件中获取时间戳,而不转换为十进制

我在excel中有一个时间戳值为“12:30:00”的单元格,当我从Excel中获取单元格的值到Java中的variables时,它将被转换为十进制值(0.520833333333333)。 如何保留相同的时间戳值或相应地将小数转换为时间戳值。

date和我假设时间值以及数字存储在Excel中。 他们需要在使用Apache POI时专门处理。

你可以尝试以下处理这个。

SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss"); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { // Dates count as numeric and must be handled separately if (DateUtil.isCellDateFormatted(cell)) { timeFormat.format(cell.getDateCellValue()); } } 

这当然只是一个例子,它在一个简单的testing案例中起作用。 我12点半进入一个单元格,它被认为是一个date,我提取了Date对象,并从中提取时间。
我用来检查的DateUtilApache POI的一部分。 它还有一些其他的function可能对你有帮助。

但是,您应该知道,这适用于非常特定的情况。 即时间被存储为一个date。 如果在源文件中更改了单元格的格式,它也可以存储为简单的文本。

根据我的经验,只处理预期的情况是不够的。 您通常需要在switch语句中处理不同的单元格types(至less是Numeric和String,也可能是Formula) ,以便保存。

您检索的十进制值0.520833333333333实际上是12.5/24所以它是一天的一小部分。

MS Excel将date存储为浮点值。 整数部分表示date,小数部分保留小时,分钟和秒。

检查这个答案: 从Excel工作表获取时间值