系统当前日期减一给定日期:
e.DataRow("假出天数") =((Date.Today)-jc("停嘱日期")).TotalDays
问题在系统当前日期,请赐教
Date.Today 如何写才可以参与计算?
[此贴子已经被作者于2011-8-28 16:46:34编辑过]
日期列的一个意外
大多数时候,我们可以直接使用日期列的值。
例如假定当前表有一个日期列,可以在命令窗口正常执行下面的代码:
Dim
m As Integer = CurrentTable.Current("日期").Month
Dim d As Date = CurrentTable.Current("日期").AddYears(360)
但是如果你在命令窗口执行下面的代码,却会出现错误提示:
Dim
t As TimeSpan
t = Date.Today - CurrentTable.Current("日期")
OutPut.Show("距今天数:" & t.TotalDays)
要使上面的代码正确执行,可以修改为:
Dim
t As TimeSpan
t = Date.Today - CDate(CurrentTable.Current("日期"))
OutPut.Show("距今天数:" & t.TotalDays)
上面的代码用CDate将列中的值转换为日期,你也许会奇怪,本来就是日期,何来转换之说,这是因为我们从某列取值的时候,不管列类型如何,得到的始终是一个Object类型的值,但是Visual Basic会自动判断真实的值类型,所以我们直接使用即可。唯一的例外就是上面这个例子:日期之间相减的时候,用CDate函数明确地转换一下。
除了用CDate转换外,还可以:
Dim
t As TimeSpan
Dim d As Date = CurrentTable.Current("日期")
t = Date.Today - d
OutPut.Show("距今天数:" & t.TotalDays)
谢谢老师指点。代码修改后计算正确
If jc IsNot Nothing And fy IsNot Nothing Then
e.DataRow("假出天数") =(fy("开嘱日期")-jc("停嘱日期")).TotalDays
End If
If jc IsNot Nothing And fy Is Nothing Then
e.DataRow("假出天数") =(Date.Today-CDate(jc("停嘱日期"))).TotalDays
End If
End If
有个问题尚不明白:"开嘱日期"、"停嘱日期"均引用于其他表,
为什么: e.DataRow("假出天数") =(fy("开嘱日期")-jc("停嘱日期")).TotalDays能直接计算出假出天数,而不需转换;
而: e.DataRow("假出天数") =(Date.Today-CDate(jc("停嘱日期"))).TotalDays需要将jc("停嘱日期")用CDate转换后才能计算?
只要记住就行了,呵,我想会不会和时段型有关啊?Today返回计算机的当前日期,不含时间,而Now返回计算机的当前时间(含日期)。
你可以试试用:Date.Now 看看需不需要转换呢?呵,我没用过
[此贴子已经被作者于2011-8-28 20:55:06编辑过]