以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 再次请教日期相减的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=12284) |
-- 作者:yanzhen2010 -- 发布时间:2011/8/28 15:54:00 -- 再次请教日期相减的问题 系统当前日期减一给定日期: e.DataRow("假出天数") =((Date.Today)-jc("停嘱日期")).TotalDays 问题在系统当前日期,请赐教 Date.Today 如何写才可以参与计算?
[此贴子已经被作者于2011-8-28 16:46:34编辑过]
|
-- 作者:yangming -- 发布时间:2011/8/28 16:49:00 -- 日期列的一个意外 大多数时候,我们可以直接使用日期列的值。 Dim m As Integer = CurrentTable.Current("日期").MonthDim d As Date = CurrentTable.Current("日期").AddYears(360) 但是如果你在命令窗口执行下面的代码,却会出现错误提示: Dim t As TimeSpant = Date.Today - CurrentTable.Current("日期") OutPut.Show("距今天数:" & t.TotalDays) 要使上面的代码正确执行,可以修改为: Dim t As TimeSpant = Date.Today - CDate(CurrentTable.Current("日期")) OutPut.Show("距今天数:" & t.TotalDays) 上面的代码用CDate将列中的值转换为日期,你也许会奇怪,本来就是日期,何来转换之说,这是因为我们从某列取值的时候,不管列类型如何,得到的始终是一个Object类型的值,但是Visual Basic会自动判断真实的值类型,所以我们直接使用即可。唯一的例外就是上面这个例子:日期之间相减的时候,用CDate函数明确地转换一下。 除了用CDate转换外,还可以: Dim t As TimeSpanDim d As Date = CurrentTable.Current("日期") t = Date.Today - d OutPut.Show("距今天数:" & t.TotalDays) |
-- 作者:yanzhen2010 -- 发布时间:2011/8/28 17:38:00 -- 谢谢老师指点。代码修改后计算正确 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转换后才能计算?
|
-- 作者:yangming -- 发布时间:2011/8/28 20:46:00 -- 只要记住就行了,呵,我想会不会和时段型有关啊?Today返回计算机的当前日期,不含时间,而Now返回计算机的当前时间(含日期)。 你可以试试用:Date.Now 看看需不需要转换呢?呵,我没用过 [此贴子已经被作者于2011-8-28 20:55:06编辑过]
|