【发布时间】:2018-11-12 15:32:38
【问题描述】:
尝试使用 ToString() 格式化持续时间时,我收到以下消息 'No Overload for method 'ToString()' takes 1 arguments。我在这个here 和here 上找到了以前的线程;但是,这些线程适用于可为空的 DateTime,并且都建议使用 myDatetime.Value.ToString(),我在下面的示例中尝试过,但仍然收到相同的消息。
public System.Windows.Duration? MyDuration { get; set; }
public string MyDurationString
{
get => (MyDuration.HasValue) ? MyDuration.Value.ToString(@"hh\:mm\:ss.fff") : null;
set => MyDuration = string.IsNullOrEmpty(value) ?
TimeSpan.Zero : TimeSpan.Parse(value);
}
【问题讨论】:
-
这里的
Duration类型是什么?你能提供一个minimal reproducible example 而不仅仅是一个sn-p吗? (构造持续时间然后格式化它会更简单 - 不需要可为空的属性等) -
你为什么不用
TimeSpan? -
如果这是一个 Noda Time 持续时间,最好添加 nodatime 标签 - 然后基本上你需要传递一个
IFormatProvider。 -
@TimSchmelter:如果这是一个 Noda Time 问题,答案是“因为 Noda Time 是一个优于 DateTime/TimeSpan/DateTimeOffset 的日期/时间 API”:)
-
您正在寻找的重载是
DateTime类型,因此只有在您使用它将DateTime转换为string时它才会起作用。
标签: c# datetime tostring duration