Foxtable(狐表)用户栏目专家坐堂 → 再次请教日期相减的问题


  共有10904人关注过本帖树形打印复制链接

主题:再次请教日期相减的问题

帅哥哟,离线,有人找我吗?
yanzhen2010
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
再次请教日期相减的问题  发帖心情 Post By:2011/8/28 15:54:00 [只看该作者]

 系统当前日期减一给定日期:

 e.DataRow("假出天数") =((Date.Today)-jc("停嘱日期")).TotalDays

问题在系统当前日期,请赐教



Date.Today  如何写才可以参与计算?
[此贴子已经被作者于2011-8-28 16:46:34编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/8/28 16:49:00 [只看该作者]

日期列的一个意外

大多数时候,我们可以直接使用日期列的值。
例如假定当前表有一个日期列,可以在命令窗口正常执行下面的代码:

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)


 回到顶部
帅哥哟,离线,有人找我吗?
yanzhen2010
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:212 积分:1564 威望:0 精华:0 注册:2011/7/20 21:00:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2011/8/28 20:46:00 [只看该作者]

只要记住就行了,呵,我想会不会和时段型有关啊?Today返回计算机的当前日期,不含时间,而Now返回计算机的当前时间(含日期)。

你可以试试用:Date.Now 看看需不需要转换呢?呵,我没用过

[此贴子已经被作者于2011-8-28 20:55:06编辑过]

 回到顶部