C# 如何消除';d';.Net DateTime的标准和自定义格式字符串?
在.Net应用程序中,我希望将日期和时间设置为固定长度格式,但不包含日期的前导零,如下所示:C# 如何消除';d';.Net DateTime的标准和自定义格式字符串?,c#,.net,datetime,string-formatting,C#,.net,Datetime,String Formatting,在.Net应用程序中,我希望将日期和时间设置为固定长度格式,但不包含日期的前导零,如下所示: String.Format("{0:d MMM HH:mm:ss}", DateTime.Now); "25 Jun 04:21:11" 这适用于大于10的月份天数,但(as)不会插入前导空格。现在,以下内容应提供所需的格式: String.Format("{0,2:d}", DateTime.Now); "25/06/2016" 但是,正如所见,使用标准格式字符串格式化日期。我可以使用: Stri
String.Format("{0:d MMM HH:mm:ss}", DateTime.Now);
"25 Jun 04:21:11"
这适用于大于10的月份天数,但(as)不会插入前导空格。现在,以下内容应提供所需的格式:
String.Format("{0,2:d}", DateTime.Now);
"25/06/2016"
但是,正如所见,使用标准格式字符串格式化日期。我可以使用:
String.Format("{0,2:''d} {0:MMM HH:mm:ss}", DateTime.Now.AddDays(-20));
" 5 Jun 04:21:11"
为了达到预期的效果,但这似乎不是很令人满意。
让格式化程序使用独立的
d
的自定义格式字符串解释而不是短日期标准格式是否有较少的解决方法?要在格式仅为单个字符时区分自定义格式和标准格式,请使用%
符号。例如:{0:d}
给出了标准的日期格式,但是{0:%d}
只给出了一个月的哪一天。看
所以,你可以这样做:
String.Format("{0,2:%d} {0:MMM HH:mm:ss}", ...
但是,您也可以只指定整个字符串的长度:
当然,这假设MMM
始终为三个字符长。英语也是如此(因为.NET使用“Sep”而不是“Sep”),但并非所有语言和地区都保证如此
还要注意的是,您应该在24小时内使用
HH
hh
给出12小时的时间,但如果不使用tt
来指示meridem标志(am/pm),则该时间毫无意义.在日期之前插入空格是一件不寻常的事情……为什么您希望日期格式支持这一点?因为数字格式通常使用“#”字符作为格式中空格的保留符。我已将格式更新为使用“HH”以确保正确性,并感谢您在很长一段时间之后找到文档页面使用正确的方式强制使用自定义格式说明符。
String.Format("{0,15:d MMM HH:mm:ss}", ...