格式化.NET DateTime“Day”,没有前导零

对于下面的代码,我希望结果等于2,因为MSDN声明’d’“表示月份中的日期为1到31之间的数字。一位数字日的格式没有前导零。”

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

但是, 结果实际上等于’6/4/2009′ – 这是短日期格式(也是’d’)。 我可以使用’dd’,但这会增加一个前导零,我不想要。

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

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

MSDN

而不是使用字符串格式化字符串,如何使用Day属性

 DateTime myDate = new DateTime(2009,6,4) int result = myDate.Day; 

或者,如果您确实需要字符串格式的结果

 string result = myDate.Day.ToString(); 

如果您希望从日期对象中获取特定日期部分而不是日期的格式化表示,我更喜欢使用属性(Day,Month,Year,DayOfWeek等)。这使得阅读代码更容易一些(特别是如果其他人正在阅读/维护它没有记住各种格式代码)