自定义日期格式化程序不输出我期望的

时间:2016-05-26 01:07:57

标签: c# .net

考虑一下:

DateTime.Now.ToString("d") // 5/26/2016

我希望上面输出" 26",因为" d"是" day"自定义格式的说明符。

此代码输出我期望的内容,但带有尾随空格:

DateTime.Now.ToString("d ") // 26

但是文档没有提到这个!

https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

2 个答案:

答案 0 :(得分:3)

这是Standard Format StringCustom Format String之间的差异。两种类型的格式字符串是单独记录的,但它们由相同的方法使用(不只是DateTime.ToString()而且还有String.Format()和许多其他地方)。为了能够将相同的输入解释为任何一种格式字符串,必须首先检查输入是否与标准格式字符串匹配,并且当且仅当该匹配失败时才使用自定义格式,如文档摘录中所述。自定义格式字符串:

  

任何非标准日期和时间格式字符串的字符串都被解释为自定义日期和时间格式字符串。

并从标准格式字符串的文档:

  

任何包含多个字符的日期和时间格式字符串(包括空格)都被解释为自定义日期和时间格式字符串;

在这种情况下,"d"匹配短日期的标准格式,因此5/26/2016结果(您必须在我的大西洋的另一边)。但"d "不是标准格式字符串,当评估为自定义格式字符串时,仅显示当月的当天。

如果您只想要一个月中的某一天,没有尾随空格,您可以这样做:

DateTime.Now.Day.ToString()

答案 1 :(得分:0)

试试这个

DateTime.Now.ToString("d ").Trim()

DateTime.Now.Day.ToString()