如何在Excel中表示DateTime


77

DateTime在Excel中表示的最佳方法是什么?我们使用Syncfusions Essential XlsIO将值输出到效果很好的Excel文档中。但是我不知道如何DateTime在列中显示。也不是直接在Excel中自己完成。不可能吗 我是否必须使用单独的日期和时间列?我真的很希望我不会,导致排序中断等等...除非Excel有一些聪明的方法可以解决...

Answers:


83

Excel中日期时间的基础数据类型是64位浮点数,其中一天的长度等于1,而1900年1月1日10:00等于1。因此,2009年6月11日17:30约为39975.72917。

如果单元格包含这样的数值,则只需将日期时间格式应用于该单元格即可将其转换为日期时间。

因此,如果您可以使用上述公式将日期时间转换为数字,将其输出到相关的单元格,然后将单元格格式设置为适当的日期时间格式,例如yyyy-mm-dd hh:mm:ss,那么应该可以达到您想要的。

此外斯特凡·德布鲁因已经指出,在Excel中,它错误地假定1900错误是闰年,所以你需要让你的计算(时考虑到这一点维基百科)。


10
不幸的是,这是不正确的。如果单元格A2 = 1-1-1900,并且您执行Value(A2),则得到'1'。此外,Excel错误地假定1900是a年(在所有计算中)。换句话说,使用您喜欢的编程语言工作时,您可能需要减去2天才能获得正确的日期……
至少会拖延

感谢Stefan de Bruijn,我更正了答案,并添加了有关the年错误的注释。
亚当·拉尔夫

3
请注意,日期时间格式取决于Excel语言。例如,西班牙语应为:aaaa-mm-dd hh:mm
DanielArgüelles2014年

63

如果像我一样,在格式对话框中找不到日期或时间下的日期时间,则应该可以在“自定义”中找到它。

我刚刚从“自定义”中选择了“ dd / mm / yyyy hh:mm”,并对结果感到满意。


上面的内容似乎不适用于Mac的Excel :(
Brantley Beaird

1
@BrantleyBeaird我没有Mac,但是您不能在自定义字符串中键入“ dd / mm / yyyy hh:mm”吗?截图:imgur.com/a/51ipd
伊恩·格兰杰

1
我这样做了,然后添加了“:ss”以包括秒。
詹姆斯in Indy

25

您可以执行以下操作:

=Datevalue(text)+timevalue(text)

进入不同类型的日期格式,然后选择:

dd-mm-yyyy mm:ss am/pm


2
为什么需要做Datevalue(text)+ timevalue(text)?只需在单元格中设置格式即可。
伊恩·格兰杰

11

某些版本的Excel在标准选择列表中没有日期时间格式,但是您可以通过以下方式输入自定义格式字符串,例如yyyy-mm-dd hh:mm:ss:

  1. 右键单击->设置单元格格式
  2. 数字标签
  3. 选择类别自定义
  4. 在“类型”字段中输入您的自定义格式字符串

这适用于我的Excel 2010


我已经说过,在一个答案中-stackoverflow.com/a/15552944/48348 ...
Ian Grainger

2

Excel可以以类似于DateTime的方式显示Date类型。受影响的电池鼠标右键,选择设置单元格格式,然后在类别中选择日期,并在类型选择类型,看起来是这样的:

3/14/01 1:30 PM

那应该做你所要求的。我测试了使用这种格式对一些示例数据进行的排序,它似乎可以正常工作。


确实是这样...您是否知道可以从C#中以一种特殊的文化方式来设置它?.NET中的标准DateTime格式字符串是否可以在excel中使用?
Svish

如果数据以字符串形式从.NET导出到Excel,并且看起来与我的示例相似,则在格式化单元格时它应该可以工作。至于特定于文化的(?),有大量的自定义格式(即,类别在Excel中为“自定义”)可能会提供您想要的内容。
马修·琼斯

7
我拥有的Excel版本(2003)没有带日期的日期选项
David Sykes 2013年

5
我的2010
-KingCronus

如果您的Excel版本没有标准的日期时间格式,则可以按照以下答案中的说明将其输入为自定义字段。
格伦·劳伦斯

1

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可以使用的double。

我希望XlsIO有类似的东西。

免责声明:我拥有SpreadsheetGear LLC



-2

dd-mm-yyyy hh:mm:ss.000通用可排序日期/时间模式


7
你是真的意思yyyy-mm-dd hh:mm:ss.000吗 还有ISO8601格式类似:(YYYY-MM-DDThh:mm:ssTZD尽管它们的局限性是可排序的,但它们仍然是字符串,因此您无法将Excel日期函数应用于它们)
dule 2014年

是的,您说对了,并且将HH的首字母大写为24小时格式。yyyy-mm-dd HH:mm:ss.000
GLeb

2
不好意思,因为我认为这不是很完整或正确的答案,对不起。
伊恩·格兰杰

1
这不是可排序或通用的。您需要将两者都放在第一位。
JasonWoof
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.