在.NET中如何将日期时间格式化为“Day”,但是不带前导零?

35

针对以下代码,根据MSDN的说明,我会期望result等于2,因为'd'代表一个数字来表示1到31日的日期。一个位数的日期不会有前导零。

DateTime myDate = new DateTime( 2009, 6, 4 );
string result = myDate.ToString( "d" );

然而,result 实际上等于 '6/4/2009' - 这是短日期格式(也是'd')。我可以使用 'dd',但这将添加一个前导零,而我不想要。

2个回答

65

为了指示这是一个自定义格式说明符(与标准格式说明符相对),它必须是两个字符长。可以通过添加空格(将显示在输出中)或在单个字母之前包含百分号来实现这一点,如下所示:

string result = myDate.ToString("%d");

请参阅文档


7
不要使用字符串格式化字符串,可以考虑使用 Day 属性。
DateTime myDate = new DateTime(2009,6,4)
int result = myDate.Day;

今日免费次数已满, 请开通会员/明日再来
string result = myDate.Day.ToString();

如果你想从一个日期对象中获取特定的日期部分而不是格式化后的日期表示,我更喜欢使用属性(Day、Month、Year、DayOfWeek等)。这样可以使代码阅读起来更容易(特别是对于那些没有记住各种格式化代码的人来说)。

谢谢,你说得很有道理。不幸的是,在我的情况下,我今天需要将格式字符串放在属性表中作为报告布局的一部分 - 所以我必须使用%d值。 - Marcel Lamothe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接