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


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

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

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | 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)


 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部