我有40241作为日期值。这是哪种格式?
我认为这是在午夜过后的几秒钟。 但我需要一个公式,以便我可以手动完成并验证!!
由于
答案 0 :(得分:3)
如果是Excel日期戳,那么它是自1899年12月31日以来的天数(1900年被视为闰年);将其定为2010年3月4日......除非Excel配置为使用Mac 1904日历,在这种情况下,它是自1904年1月1日以来的天数。
如何转换它取决于您首选的脚本语言;或者您是否可以简单地使用Excel本身,只需将该单元格的格式掩码设置为其中一种日期格式
答案 1 :(得分:2)
如果是“午夜过后”,你可以这样做:
示例:
40241/3600=11 (641)
641/60=10 (41)
所以现在是11:10:41。
顺便说一句,我想这是一个时间值;如果它是一个日期时间值,它可能会更大(如UNIX时间戳)或它将有一个小数部分(如,IIRC,OLE日期)。
事实证明这是一个Excel日期;那么,看看this KB article,这些都详细解释了;但如果您只想正确显示它,请转到单元格的属性( Ctrl + 1 )并将其数据类型设置为“Date”或“Date / Time” “(或者不管它是什么,我现在手边没有Excel)。
答案 2 :(得分:0)
Excel以有趣的方式存储日期。我也有这个问题,但我从来没有搬到Excel以外,所以我可以在Excel中使用格式化功能。
您可以在这里阅读更多内容:
答案 3 :(得分:0)
Excel将日期保存为自1900年1月1日以来的天数的整数
注意: excel中存在错误,因此您执行转换并减去一个转换。如果在时间之后看到小数。
如果要验证它,可以使用以下代码来转换它:
public static Date ExcelDateParse(int ExcelDate){
Date result = null;
try{
GregorianCalendar gc = new GregorianCalendar(1900, Calendar.JANUARY, 1);
gc.add(Calendar.DATE, ExcelDate - 1);
result = gc.getTime();
} catch(RuntimeException e1) {}
return result;
}
答案 4 :(得分:0)
我在没有时间(https://svn.apache.org/repos/asf/poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java)
的情况下为日期压缩了apache解决方案 public static Date parseExcelDate(double date) {
int wholeDays = (int) Math.floor(date);
Calendar calendar = new GregorianCalendar();
int startYear = 1900;
int dayAdjust = wholeDays < 61 ? 0 : -1;
calendar.set(startYear, 0, wholeDays + dayAdjust, 0, 0, 0);
return calendar.getTime();
}
其他主题:Program in Java to convert a date to serial number as done in Excel