Foxtable(狐表)用户栏目专家坐堂 → 精确计算两个日期之间的天数间隔


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

主题:精确计算两个日期之间的天数间隔

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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
精确计算两个日期之间的天数间隔  发帖心情 Post By:2009/1/10 22:59:00 [只看该作者]

在易表中有一个DAYSBTW函数
其作用:
精确计算两个日期之间的天数间隔,例如:
DAYSBTW($"1999-2-1",$"1999-3-1") = 28
DAYSBTW([出生日期],Today())
返回自出生日期至今,合计有多少天。

狐表里如何能实现这样的功能。我没找到类似的,请指教

我要计算某一日期到“今天”之间的天数间隔

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2009/1/10 23:05:00 [只看该作者]

Dim d1 As Date = #1/1/1983#
Dim d2 As Date = Date.Today
Dim ts As TimeSpan = d2 - d1
Return ts.Days

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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
  发帖心情 Post By:2009/1/10 23:38:00 [只看该作者]

DateDiff(interval,date1,date2)
我找到了这样一个命令,应该更简单些。
个人感觉狐表这方面做得不如易表。找个命令很困难。为什么不能像易表那样,做一个公式生成器呢。对于不懂编程的人帮助很大

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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
  发帖心情 Post By:2009/1/11 0:49:00 [只看该作者]

以下是引用lxl在2009-1-10 23:05:00的发言:
Dim d1 As Date = #1/1/1983#
Dim d2 As Date = Date.Today
Dim ts As TimeSpan = d2 - d1
Return ts.Days

您能再说的详细点吗?我不会用


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


加好友 发短信 好心情 一级勋章
等级:超级版主 帖子:715 积分:5564 威望:0 精华:1 注册:2008/8/31 20:45:00
  发帖心情 Post By:2009/1/11 8:26:00 [只看该作者]

时段概述

时段的类型为TimeSpan,所谓时段,就是一段时间范围。

定义一个新的TimeSpan的语法为:

New TimeSpan(days, hours, minutes, seconds, milliseconds)
New TimeSpan(days,
hours, minutes, seconds)
New TimeSpan(
hours, minutes, seconds)

例如:

Dim tp1 As New TimeSpan(20,13,45) '20小时13分45秒
Dim
tp2 As New TimeSpan(1,20,13,45) '1天20小时13分45秒
Dim
tp3 As New TimeSpan(1,20,13,45,200) '1天20小时13分45秒200毫秒
Dim
tp4 As New TimeSpan(0,0,0,200) '200秒
Dim
tp5 As New TimeSpan(0,0,0,0,200) '200毫秒

时段数据有以下常用属性:

属性 说明
Days 获得时段数据的天数
Hours 获得时段数据的小时数
Minutes 获得时段数据的分钟数
Seconds 获得时段数据的秒数

两个日期时间数据相减,得到的就是一个时段型数据。

例如:

Dim d1 as Date = #3/17/2002 12:30:29#
Dim
d2 as Date = #1/1/2008 10:11:49#
Dim
t As TimeSpan = d2 - d1
Output.Show(t.Days &
"天" & t.Hours & "小时" & t.Minutes & "分" & t.Seconds & "秒")

在命令窗口执行上述代码,得到的输出结果是:2115天21小时41分20秒

利用时段数据的下述属性,可以将时段转换为一个数值:

属性 说明
TotalDays 将时段值转换为以天为单位的数值
TotalHours 将时段值转换为以小时为单位的数值
TotalMinutes 将时段值转换为以分为单位的数值
TotalSeconds 将时段值转换为以秒为单位的数值

例如:

Dim d1 as Date = #3/17/2002 12:30#
Dim
d2 as Date = #1/1/2008 18:30#
Dim t As TimeSpan = d2 - d1

Output.Show(t.TotalDays &
"")

在命令窗口执行上述代码,得到的输出结果是:2116.25天

利用时段数据的Add和Subtract方法,可以进行时段的加减,并得到一个新的时段值。

例如:

Dim t0 As New TimeSpan(10,0,5)
Dim
t1 As New TimeSpan(40,6,30,15)
Dim
t2 As New TimeSpan(40,20,45)
Dim
t3 As TimeSpan
t3
= t1.Subtract(t2) 't3等于t1减去t2
t3 = t3.Add(t0)
't3加上t0
Output.Show(t3.Days &
"天" & t3.Hours & "小时" & t3.Minutes & "分" & t3.Seconds & "秒")

在命令窗口执行上述代码,得到的输出结果是:39天0小时9分35秒

有时为了测试代码的效率,我们需要记录代码执行所耗费的秒数,可以参考下面的代码:

Dim t1 As Date = Date.Now
Dim
Sum As Long
For
i As Integer = 1 To 10000000
    Sum = Sum + i

Next

Output.Show(
"计算结束, 耗时: " & (Date.Now - t1).TotalSeconds & "秒"
)


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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
  发帖心情 Post By:2009/1/11 12:57:00 [只看该作者]

我的表中有两列出生日期列,距今月数列。其中距今月数列是表达式列,是计算我填入的出生日期列中的日期到今天之前有多少个月
这样应该怎么做/?


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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
[求助]请教专家关于局域网内其他客户使用程序的问题!  发帖心情 Post By:2009/1/13 11:07:00 [只看该作者]

Dim d1 As Date = ([生产日期])  ‘引用生产日期列的数据
Dim d2 As Date = Date.Today
Dim ts As TimeSpan = d2 - d1
Return ts.Days
我想计算有效期,请老师帮忙看看,什么地方不对

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/1/13 12:31:00 [只看该作者]

Dim d1 As Date = CurrentTable.Current("出生日期")
Dim d2 As Date = Date.Today
Dim ts As TimeSpan = d2 - d1
Return ts.Days

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


加好友 发短信
等级:婴狐 帖子:37 积分:387 威望:0 精华:0 注册:2008/11/12 17:20:00
  发帖心情 Post By:2009/1/13 16:57:00 [只看该作者]

以下是引用czy在2009-1-13 12:31:00的发言:
Dim d1 As Date = CurrentTable.Current("出生日期")
Dim d2 As Date = Date.Today
Dim ts As TimeSpan = d2 - d1
Return ts.Days

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:desktop.rar

我在使用的时候还是报错,这是截图,请老师指点。谢谢


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/1/13 17:05:00 [只看该作者]

 两个错误提示度说的很清楚:
错误一:客户表没有出生日期列
错误二:应该是:

Tables("客户表").Current("出生日期")

而不是:

Table("客户表").Current("出生日期")


 回到顶部
总数 15 1 2 下一页