我正在尝试使用以下代码计算今天和过去日期之间的日期:
CaseOpenDays.Text = (DateTime.Now.Subtract(CDate(DateReported.Text)))
其中 CaseOpenDays 是标签, DateReported.text 也是标签 .
CaseOpenDays
DateReported.text
我抛出了这个错误:
'System.TimeSpan'类型的值无法转换为'String'
我在这里错过了什么?
你必须使用 TimeSpan.Days 或 TimeSpan.TotalDays :
TimeSpan.Days
TimeSpan.TotalDays
Dim timeSinceReporting As TimeSpan = DateTime.Now - CDate(DateReported.Text) CaseOpenDays.Text = CInt(timeSinceReporting.TotalDays).ToString()
另一种方式是TimeSpan.ToString:
CaseOpenDays.Text = timeSinceReporting.ToString("dd")
您忘记将TimeSpan结果转换为某些文本内容,例如在其上调用ToString
CaseOpenDays.Text = DateTime.Now.Subtract(CDate(DateReported.Text)).ToString
(DateTime.Now.Subtract(CDate(DateReported.Text))) 返回一个时间 Span 而不是一个字符串:)
(DateTime.Now.Subtract(CDate(DateReported.Text)))
当您减去两个DateTime结构时,最终会得到TimeSpan结构 . 这很合乎逻辑 . 您的TimeSpan是一个具有方法的结构,不能直接转换为String ...
在这里你可以做到:
Dim ts As TimeSpan = DateTime.Now.Subtract(CDate(DateReported.Text)) CaseOpenDays.Text = ts.Days.toString()
您还可以使用TotalDays方法 . Here is the explanation of the difference.
4 回答
你必须使用
TimeSpan.Days
或TimeSpan.TotalDays
:另一种方式是TimeSpan.ToString:
您忘记将TimeSpan结果转换为某些文本内容,例如在其上调用ToString
(DateTime.Now.Subtract(CDate(DateReported.Text)))
返回一个时间 Span 而不是一个字符串:)当您减去两个DateTime结构时,最终会得到TimeSpan结构 . 这很合乎逻辑 . 您的TimeSpan是一个具有方法的结构,不能直接转换为String ...
在这里你可以做到:
您还可以使用TotalDays方法 . Here is the explanation of the difference.