| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1857 人关注过本帖
标题:求日期计算函数。。。(再次感谢madpbpl的帮助)
只看楼主 加入收藏
letla
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-11-18
结帖率:100%
收藏
 问题点数:0 回复次数:11 
求日期计算函数。。。(再次感谢madpbpl的帮助)
jieju在ASP当中有没有DATEDIF这个函数啊?
具体应该怎么操作哪位大哥指点下啊???
最好举个例看看,先谢谢大家了。。。

[[italic] 本帖最后由 letla 于 2007-12-14 11:31 编辑 [/italic]]
搜索更多相关主题的帖子: madpbpl 函数 感谢 
2007-12-13 12:32
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
DateDiff 函数
返回两个日期之间的时间间隔。

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

DateDiff 函数的语法有以下参数:

参数
interval

必选项。String expression 表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。

date1, date2

必选项。日期表达式。用于计算的两个日期。

Firstdayofweek

可选项。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。

Firstweekofyear

可选项。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

设置
interval 参数可以有以下值:

设置 描述
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
n 分钟
s 秒


firstdayofweek 参数可以有以下值:

常数 值 描述
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbSunday 1 星期日(默认)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六


firstweekofyear 参数可以有以下值:

常数 值 描述
vbUseSystem 0 使用区域语言支持 (NLS) API 设置。
vbFirstJan1 1 由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays 2 由在新年中至少有四天的第一周开始。
vbFirstFullWeek 3 由在新的一年中第一个完整的周开始。


说明
DateDiff 函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用 DateDiff 计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算 date1 和 date2 相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当 interval 为“一周的日数”(“w”)时,DateDiff 返回两个日期之间的星期数。如果 date1 是星期一,则 DateDiff 计算到 date2 之前星期一的数目。此结果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),则 DateDiff 函数返回日历表中两个日期之间的星期数。函数计算 date1 和 date2 之间星期日的数目。如果 date2 是星期日,DateDiff 将计算 date2,但即使 date1 是星期日,也不会计算 date1。

如果 date1 晚于 date2,则 DateDiff 函数返回负数。

firstdayofweek 参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果 date1 或 date2 是日期文字,则指定的年度会成为日期的固定部分。但是如果 date1 或 date2 被包括在引号 (" ") 中并且省略年份,则在代码中每次计算 date1 或 date2 表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

在 interval 为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff 返回 1 表示相差一个年份。

下面的示例利用 DateDiff 函数显示今天与给定日期之间间隔天数:

Function DiffADate(theDate)
  DiffADate = "从当天开始的天数:" & DateDiff("d", Now, theDate)
End Function
2007-12-13 13:03
letla
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-11-18
收藏
得分:0 
谢谢madpbpl又来帮我了。。。
再请教下有方法没有让计算年精确到1天的呢?
我刚才试了下面的代码,返回的结果是1。。。
如果是按照我们要算工龄的话,结果应该是0才对。。。
Rs("GZ_GL") = datediff("yyyy","2006-11-6","2007-11-5")
2007-12-13 14:46
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
datediff("yyyy",data1,data2)
这种形式只比较你的两个日期的年份,,因为你上面的日期一个是2006、一个是2007,所以相差为1
如果要精确到天,需要改成
datediff("d",data1,data2)或
datediff("y",data1,data2)

请注意下面的设置
设置 描述
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
n 分钟
s 秒
2007-12-13 17:34
letla
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-11-18
收藏
得分:0 
如果是datediff("d",data1,data2)/365好像又不够精确啊。。。
有没有办法精确计算两个日期间相差的年啊?
比如2006-11-6,2007-11-5都不能算是1年都只能是0.
只有2006-11-5,2007-11-5才能算是一年,一天都不能少。
有没有办法啊?
2007-12-13 18:27
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
不是还有一条吗?
datediff("y",data1,data2)
这个有没有试过呢?
2007-12-13 18:50
letla
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-11-18
收藏
得分:0 
你不说y是 一年的日数啊?
到最后还是要/365?
2007-12-13 18:59
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
如果非要精确到一天来计算年数,好象是要除以365(366)了,还要判断一下是否为闰年。
2007-12-13 19:43
letla
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-11-18
收藏
得分:0 
接近搞定了。。。我是计算工龄奖,我们公司是从2003年开始实施工龄奖的,所以工龄>4以上的就工龄/4,再重新把日期-去这个数再/365貌似就精确了,刚好避开了2000年。。。
不过还有个小问题。。。
怎么定义上月5号日期?拜托再跟我讲讲啦。。。比如说现在取上月5号就应该是2007-11-5。。。
该如何取这个值啊???拜托拜托。。。

     dim GL_0,GL_1,GL_2,GL_3,GL_4,GL_5
     GL_0 = Rs1("User_RTime")
     GL_1 = int(datediff("d",GL_0,"2007-11-5")/365)
     if GL_1>3 then
     GL_5 = datediff("d",GL_0,"2007-11-5")-int(GL_1/4)
     GL_2 = int(GL_5/365)
     else
     GL_2 = GL_1
     end if
     GL_3 = Request.Form("GZ_Day")
     Select Case GL_3
     case 21,22,23,24,25,26,27,28,29,30,31
     GL_4=GL_2*15
     case 14,15,16,17,18,19,20
     GL_4= int(GL_2*15/2)
     case else
     GL_4=0
     end select
2007-12-13 20:37
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
为什么一定要取上个月5号的日期,这个日期是怎么获取的呢?(我的意思是为什么不取6、7、8。。。)
2007-12-14 00:35
快速回复:求日期计算函数。。。(再次感谢madpbpl的帮助)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051507 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved