我遇到类似的抛出FormatException的问题。我的代码很简单:
void Orders_OnSubmit()
{
DateTime CurrentTime = DateTime.Now;
rtbAdd( "Submitted on " + CurrentTime.Date.ToString("MM/dd/yyyy") + " at " + CurrentTime.TimeOfDay.ToString("HH:mm:ss.ffffff") );
}
void rtbAdd(String S)
{
DefaultDelegate del = delegate()
{
rtb.AppendText(S + "\n");
};
this.Invoke(del);
}
这里有什么问题?这是一个线程问题吗?
答案 0 :(得分:24)
TimeOfDay
为TimeSpan
,其formatting options与DateTime
不同。您还需要转义':'
:
currentTime.TimeOfDay.ToString("hh\\:mm\\:ss\\.ffffff")
您的示例尝试使用的"HH"
格式为defined for DateTime
,但不适用于TimeSpan
。
答案 1 :(得分:21)
无需显式访问DateTime实例的Date和TimeOfDay属性。您可以像这样简化代码:
rtbAdd(String.Format("Submitted on {0:MM/dd/yyyy} at {0:HH:mm:ss.ffffff}", DateTime.Now));