【发布时间】:2009-06-11 15:01:32
【问题描述】:
在 Excel 中表示DateTime 的最佳方式是什么?我们使用 Syncfusions Essential XlsIO 将值输出到 Excel 文档,效果很好。但我不知道如何在列中显示DateTime。也不是直接在Excel中自己做的。不可能吗?我必须使用单独的日期和时间列吗?我真的希望我不这样做,因为它会破坏排序等...除非 Excel 有一些聪明的方法可以解决这个问题...
【问题讨论】:
在 Excel 中表示DateTime 的最佳方式是什么?我们使用 Syncfusions Essential XlsIO 将值输出到 Excel 文档,效果很好。但我不知道如何在列中显示DateTime。也不是直接在Excel中自己做的。不可能吗?我必须使用单独的日期和时间列吗?我真的希望我不这样做,因为它会破坏排序等...除非 Excel 有一些聪明的方法可以解决这个问题...
【问题讨论】:
Excel 中日期时间的基础数据类型是 64 位浮点数,其中一天的长度等于 1,1st Jan 1900 00:00 等于 1。所以11th June 2009 17:30 大约是39975.72917。
如果单元格包含这样的数值,只需将日期时间格式应用于单元格即可将其转换为日期时间。
因此,如果您可以使用上述公式将日期时间转换为数字,请将它们输出到相关单元格,然后将单元格格式设置为适当的日期时间格式,例如yyyy-mm-dd hh:mm:ss,那么应该可以实现你想要的。
另外,Stefan de Bruijn 指出 Excel 中存在一个错误,它错误地假定 1900 年是闰年,因此您在计算时需要考虑到这一点 (Wikipedia)。
【讨论】:
如果像我一样,您在格式对话框的日期或时间下找不到日期时间,您应该可以在“自定义”中找到它。
我刚刚从“自定义”中选择了“dd/mm/yyyy hh:mm”,并对结果感到满意。
【讨论】:
您可以执行以下操作:
=Datevalue(text)+timevalue(text) 。
进入不同类型的日期格式并选择:
dd-mm-yyyy mm:ss am/pm 。
【讨论】:
某些版本的 Excel 在标准选择列表中没有可用的日期时间格式,但您可以输入自定义格式字符串,例如 yyyy-mm-dd hh:mm:ss by:
这适用于我的 Excel 2010
【讨论】:
Excel 可以以与 DateTime 类似的方式显示 Date 类型。右键单击受影响的单元格,选择 Format Cells,然后在 Category 下选择 Date 并在 Type 下选择类型看起来像这样:
3/14/01 1:30 PM
这应该符合您的要求。我用这种格式测试了一些样本数据的排序,它似乎工作正常。
【讨论】:
Excel 希望将日期和时间存储为浮点数,其值取决于工作簿的 Date1904 设置,加上数字格式,例如“mm/dd/yyyy”或“hh:mm:ss”或“ mm/dd/yyyy hh:mm:ss" 以便将数字作为日期/时间显示给用户。
使用SpreadsheetGear for .NET 你可以这样做: worksheet.Cells["A1"].Value = DateTime.Now;
这会将 DateTime 转换为双精度类型,这是 Excel 用于日期/时间的基础类型,然后根据值自动使用默认日期和/或时间数字格式格式化单元格。
SpreadsheetGear 还具有 IWorkbook.DateTimeToNumber(DateTime) 和 NumberToDateTime(double) 方法,可将 .NET DateTime 对象转换为 Excel 可以使用的 double。
我希望 XlsIO 也有类似的东西。
免责声明:我拥有 SpreadsheetGear LLC
【讨论】:
您可以使用以下选项之一将日期时间值设置为 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。
【讨论】:
dd-mm-yyyy hh:mm:ss.000 通用可排序日期/时间模式
【讨论】:
yyyy-mm-dd hh:mm:ss.000吗?还有类似的 ISO8601 格式:YYYY-MM-DDThh:mm:ssTZD(这些限制是,虽然可以排序,但它们仍然是字符串,所以你不能对它们应用 Excel 日期函数)