在Excel中表示DateTime
的最佳方式是什么?我们使用Syncfusions Essential XlsIO将值输出到Excel文档,该文档非常有用。但我无法弄清楚如何在列中显示DateTime
。不是直接在Excel中自己做的。这不可能吗?我是否必须使用单独的日期和时间列?我真的希望我没有,因为它有点打破排序等等......除非Excel有一些聪明的东西来修复它......
答案 0 :(得分:70)
Excel中日期时间的基础数据类型是64位浮点数,其中一天的长度等于1,而1900年1月1日00:00等于1.因此,2009年6月11日17:30约为39975.72917。
如果单元格包含此类数字值,则只需将日期时间格式应用于单元格即可将其转换为日期时间。
因此,如果您可以使用上面的公式将日期时间转换为数字,请将它们输出到相关的单元格,然后将单元格格式设置为适当的日期时间格式,例如yyyy-mm-dd hh:mm:ss,那么应该可以实现你想要的东西。
同样Stefan de Bruijn指出Excel中存在一个错误,它错误地假设1900是闰年,因此您在进行计算时需要考虑到这一点(Wikipedia)。 / p>
答案 1 :(得分:55)
如果像我一样,您无法在格式对话框中找到日期或时间下的日期时间,您应该可以在“自定义”中找到它。
我刚从'Custom'中选择'dd / mm / yyyy hh:mm',我对结果感到满意。
答案 2 :(得分:17)
您可以执行以下操作:
=Datevalue(text)+timevalue(text)
。
进入不同类型的日期格式并选择:
dd-mm-yyyy mm:ss am/pm
。
答案 3 :(得分:11)
某些版本的Excel没有标准选择列表中提供的日期时间格式,但您只需输入自定义格式字符串,例如yyyy-mm-dd hh:mm:ss by:
这适用于我的Excel 2010
答案 4 :(得分:1)
Excel可以与DateTime类似的方式显示日期类型。右键单击受影响的单元格,选择 Format Cells ,然后在 Category 下选择 Date ,在 Type 下选择类型看起来像这样:
3/14/01 1:30 PM
那应该按照你的要求做。我用这种格式测试了一些样本数据的排序,似乎工作正常。
答案 5 :(得分:1)
您可以使用其中一个选项
将日期时间值设置为XlsIO中的单元格sheet.Range["A1"].Value2 = DateTime.Now;
sheet.Range["A1"].NumberFormat = "dd/mm/yyyy";
sheet.Range["A2"].DateTime = DateTime.Now;
sheet.Range["A2"].NumberFormat = "[$-409]d-mmm-yy;@";
您可以找到更多信息here。
答案 6 :(得分:1)
dd-mm-yyyy hh:mm:ss.000 通用可排序日期/时间模式
答案 7 :(得分:0)
Excel要求将日期和时间存储为浮点数,其值取决于工作簿的Date1904设置,加上数字格式,例如“mm / dd / yyyy”或“hh:mm:ss”或“ mm / dd / yyyy hh:mm:ss“以便将数字显示给用户作为日期/时间。
使用SpreadsheetGear for .NET您可以这样做: worksheet.Cells [“A1”]。Value = DateTime.Now;
这会将DateTime转换为double,它是Excel用于日期/时间的基础类型,然后根据值自动格式化具有默认日期和/或时间数字格式的单元格。
SpreadsheetGear还有IWorkbook.DateTimeToNumber(DateTime)和NumberToDateTime(double)方法,这些方法从.NET DateTime对象转换为Excel可以使用的双精度。
我希望XlsIO能有类似的东西。
免责声明:我拥有SpreadsheetGear LLC