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


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

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

帅哥哟,离线,有人找我吗?
smileboy
  1楼 | 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 & "秒"
)


 回到顶部