为什么当我想获得具有自定义格式的TimeSpan
字符串时出现错误。
DateTime.Now.TimeOfDay.ToString("hh:mm");
// Error: Input string was not in a correct format.
答案 0 :(得分:50)
DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss")
答案 1 :(得分:8)
根据MSDN,TimeOfDay是TimeSpan。在TimeSpan.ToString的示例中,您会看到:
需要转义。
hh \:mm \:ss:03:00:00
页面Custom TimeSpan Format Strings
也对此进行了解释自定义TimeSpan格式说明符不包括占位符分隔符符号,例如将小时数与小时数,小时数与分数小时数或秒数与小数秒数分隔开的符号。相反,这些符号必须作为字符串文字包含在自定义格式字符串中。 例如," dd \ .hh \:mm"将句点(。)定义为天和小时之间的分隔符,并将冒号(:)定义为小时和分钟之间的分隔符。
所以试试:
DateTime.Now.TimeOfDay.ToString("hh\:mm");
答案 2 :(得分:0)
请勿使用TimeOfDay
。直接在ToString()
上执行DateTime.Now
:
DateTime.Now.ToString("hh:mm");
TimeOfDay
是TimeSpan
。文档清楚地说明了TimeSpan.ToString(string format)
重载:
format参数可以是TimeSpan值的任何有效标准或自定义格式说明符。如果format等于String.Empty或为null,则使用通用格式说明符(“c”)格式化当前TimeSpan对象的返回值。如果format是任何其他值,则该方法抛出FormatException。
如果必须使用TimeSpan
变量,只需将其添加到时间部分设置为零的DateTime
变量中,然后使用其ToString()
:< / p>
DateTime.Today.Add(YourTimeSpanVariable).ToString("hh:mm");