2

给定某个日期,我想使用 DateTime 对象设置单元格的,但没有“时间”信息。例如,今天的值将只是"29/06/2012"而不是"29/06/2012 16:54:36"

关于显示,对于今天的日期,我希望它写成这样(它是法语,我不知道它会是英语):"29 juin"而不是"29/06/2012"

我怎样才能做到这一点?

编辑:我只是看了一下我在 Excel 中需要的显示格式,它是“jj mmmm”(C# 中的“dd mmmm”)。但是单元格虽然采用值,但不采用格式。这是一段代码:

                 cell.Value = string.Format("{0:dd/MM/yyyy}", DateTime.Now);
                 cell.NumberFormat = "jj mmmm";

我也试过:

                 cell.Value = DateTime.Now;
                 cell.NumberFormat = "jj mmmm";

在这种情况下,显示格式正常,但单元格值包含时间信息,这是不正常的。

4

4 回答 4

1

请参阅这个StackOverflow 问题以及我的回答。它将允许您直接在 Excel 工作表中设置单元格的自定义格式,从那里您只需要研究不同的日期格式字符串是什么。

不过,这仅在您使用 excel 自动化时才有用。

否则,格式化 DateTime.ToString 输出会更好。再一次,研究不同的 DateStringFormatting 选项将对您有所帮助。

最后的选择。直接更改模板,不使用自动化。转到单元格并手动更改单元格格式,直到显示是您想要的。这不会改变实际数据,只会改变它的显示。

更新

有两个具体问题需要处理。

问题一是确保 excel 识别这是一个日期。为此,请确保日期数据本身采用 en-US 格式。为什么,因为微软很笨,不承认国际日期格式。

问题二是单元格的显示格式。对于月份的 3 个字母缩写,请使用字符串d mmm。如果您想要完整的月份名称,请使用d-mmmm.

我正在测试并注意到 excel 拒绝将 29/06/2012 16:54:36 视为日期,但它接受了 06/29/2012 16:54:36 没有问题。正如我所说,微软是愚蠢的。

于 2012-06-29T15:23:56.480 回答
0

DateTime 有一个名为 ToShortDateString 的方法

于 2012-06-29T14:59:32.563 回答
0
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", CultureInfo.CreateSpecificCulture("fr-FR")));

这对您来说是一个很好的资源: msdn custom date and time format strings

于 2012-06-29T15:00:49.863 回答
0

只需更改DateTime.NowDateTime.Date,时间将归零

于 2012-06-29T15:51:11.267 回答