使用`d`格式化程序发出日期时间

时间:2016-11-23 10:31:58

标签: c# datetime

我想根据用户which may be d for the day of the month without a leading zero提供的自定义日期字符串格式化DateTime对象:

var date = DateTime.ParseExact("2016-11-05T15:30:00", "yyyy-MM-dd\\THH:mm:ss", null);
Console.WriteLine(date.ToString("d."));
Console.WriteLine(date.ToString("d"));
Console.WriteLine(date.ToString("dd."));
Console.WriteLine(date.ToString("dd"));

结果出人意料地突出:

5.
11/5/2016
05.
05

为什么不出现5? 有没有办法获得5而没有制作特殊的case语句,并且没有在每个格式字符串中添加其他字符并在处理后剥离它们(这可能会或可能不会导致其他格式字符串的错误没有检查,但用户可能会提出)?

2 个答案:

答案 0 :(得分:2)

" d"是标准时间日期的格式,如果您希望它只作为自定义格式显示日期,请添加"%"对它,像这样:

Console.WriteLine(date.ToString("%d"));

请参阅:https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#dSpecifier

答案 1 :(得分:1)

尝试以下方法:

string d = string.Format("{0:d }", date);
//                            ^ this space is important
// output will have a trailing space, e.g. '5 '

请参阅Using single custom format specifiers