【问题标题】:Why does DateTime.Now.TimeOfDay.ToString("HH:mm:ss.ffffff") throw FormatException?为什么 DateTime.Now.TimeOfDay.ToString("HH:mm:ss.ffffff") 会抛出 FormatException?
【发布时间】:2013-04-03 05:04:47
【问题描述】:

我在抛出 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);
}

这里有什么问题?这是线程问题吗?

【问题讨论】:

  • 哪里抛出异常?

标签: c# datetime formatexception


【解决方案1】:

TimeOfDay 的类型为 TimeSpan,它的 formatting optionsDateTime 不同。您还需要转义冒号 (:)

 currentTime.TimeOfDay.ToString("hh\\:mm\\:ss\\.ffffff") 

您的示例尝试使用"HH" 格式,即defined for DateTime,但不适用于TimeSpan

【讨论】:

  • @user1935160:无需将时间与您的 DateTime 实例分开。只需使用CurrentTime.ToString("HH:MM:ss.ffffff")。日期部分也是如此。
  • 非常感谢您提供详细而有帮助的回复!
  • 对于任何寻找自定义选项来输出像晚上 11:00 这样微不足道的东西的人来说,这个自定义代码是我发现的唯一方法:newbedev.com/…
【解决方案2】:

无需显式访问 DateTime 实例的 Date 和 TimeOfDay 属性。您可以像这样简化代码:

rtbAdd(String.Format("Submitted on {0:MM/dd/yyyy} at {0:HH:mm:ss.ffffff}", DateTime.Now));

【讨论】:

  • 优秀。我花了两个小时在 MSDN 上阅读,并在测试了一些代码排列后把我的头发拉了出来,这让我无处可去,只有几分钟的专家时间!再次感谢。
猜你喜欢
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 2015-04-24
  • 2013-06-24
  • 1970-01-01
  • 2021-12-20
  • 2021-03-05
  • 2021-03-19
相关资源
最近更新 更多