我尝试使用以下代码计算今天和过去日期之间的日期:
CaseOpenDays.Text = (DateTime.Now.Subtract(CDate(DateReported.Text)))
CaseOpenDays
是标签,DateReported.text
也是标签。
我抛出了这个错误:
类型的价值' System.TimeSpan'无法转换为'字符串'
我在这里缺少什么?
答案 0 :(得分:1)
您忘记将TimeSpan结果转换为某些文本内容,例如在其上调用ToString
CaseOpenDays.Text = DateTime.Now.Subtract(CDate(DateReported.Text)).ToString
答案 1 :(得分:1)
(DateTime.Now.Subtract(CDate(DateReported.Text)))
返回时间跨度而不是字符串:)
答案 2 :(得分:1)
当您减去两个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.
答案 3 :(得分:1)
您必须使用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")