找一个和2个时间有关的天数和月数的计算函数,希望高效,

gq 2003-05-30 11:07:19
2个时间如:2002-1-2 2003-6-4
求2002-1-2到2003-6-4
有多少个整月(这里的整月指的是那个月的1号到月底都在2个时间内):如2002-2-1到2002-2-28是一个整月。
2个天数:2002-1-2到该月底的天数,2003-6-1到2003-6-4
我虽然写出来了。。但是很慢,多谢。
...全文
208 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
stormhu 2003-06-03
  • 打赏
  • 举报
回复
不错,研究一下
summercat 2003-06-03
  • 打赏
  • 举报
回复
显示给定日期和当天日期之间的天数:

Function DiffADate(theDate)
DiffADate = "从当天开始的天数:" & DateDiff("d", Now, theDate)
End Function

summercat 2003-06-03
  • 打赏
  • 举报
回复
学习...
gq 2003-06-03
  • 打赏
  • 举报
回复
呵呵。由于我的整月的定义是如果那个月是从1号到月最后一天都在两个时间内,就算一个整月,所以第一个函数可能你考虑不是很周到,有错误。
如:你第一个函数的计算结果:2003-1-1与2003-1-31之间有0个整月。
正确应该是1个整月,所以我做了些修改:
<%
fromDate="2003-1-1"
endDate="2003-1-31"

function findMonth(fromDate,endDate)
interval=Datediff("m",fromDate,endDate)-1
response.write interval &"<br>"
if datepart("d",fromdate)=1 then
interval=interval+1
end if

if datepart("d",dateadd("d",1,enddate))=1 then
interval=interval+1
end if
findMonth=fromdate & "与" & enddate & "之间有" & interval & "个整月。" & "<br>"
end function

response.Write findMonth(fromdate,enddate)
%>
第二个函数用了fromdate加上一个月再减去fromdate得到当月的天数,比我构造月底的时间,然后两者相比较要好。
@_@
gq 2003-06-03
  • 打赏
  • 举报
回复
恩。。有点新意思。。我研究下你的算法。
lqflsh 2003-06-02
  • 打赏
  • 举报
回复
当然直接用asp得到效率更高。
因为不需要和数据库连接,也没有数据中转,更不会浪费更多的资源。
gq 2003-06-02
  • 打赏
  • 举报
回复
呵呵。。这些函数还是会用的。。
既然大家只给出这些函数,那我想看看大家对我编的2个针对我的要求写的代码,看看哪个效率高点。
<%
'******************************************************
cbegin_time="2003-1-2"
cend_time="2004-1-31"
'beginOfDays:cbegin_time到月底的时间,如果为0,整月+1
if day(cbegin_time)=1 then
beginOfDays = 0
else
beginOfDays =datediff("d",cbegin_time ,DATEADD("m", 1,cstr(year(cbegin_time))+"-"+cstr(month(cbegin_time))+"-1"))
end if
'beginTimeOfDays:cbegin_time所在的时间的该月的天数
beginTimeOfDays =day(DATEADD("d",-1,DATEADD("m", 1,cstr(year(cbegin_time))+"-" + cstr(month(cbegin_time))+"-1")))
'endOfdays: cend_time到月初的时间,如果为0,整月+1
if day(cend_time) = day(DATEADD("d",-1,DATEADD("m", 1,cstr(year(cend_time))+"-"+cstr(month(cend_time))+"-1"))) then
endOfdays = 0
else
endOfdays = day(cend_time)
end if
'如果numberOfMonths=-1说明2个时间在同一个月中,
endTimeOfDays = day( DATEADD("d" , -1 , DATEADD("m", 1,cstr(year(cbegin_time))+"-"+cstr(month(cbegin_time)) + "-1" )))
'如果numberOfMonths= 0说明2个时间在连续的两个月中.
numberOfMonths = datediff("M",cbegin_time,cend_time)-1
'numberOfDays:cbegin_time到cend_time的天数
numberOfDays = datediff("d",cbegin_time,cend_time)+1

if beginOfDays = 0 then
numberOfMonths=numberOfMonths+1
end if
if endOfdays = 0 then
numberOfMonths=numberOfMonths+1
end if

response.write cbegin_time &"到该月底有" &beginOfDays &"天<br>"
if beginOfDays = 0 then
response.write "这个月可以算成一个整月了。"
end if
response.write cend_time &"到该月首有" &endOfdays &"天<br>"
if endOfdays = 0 then
response.write "这个月可以算成一个整月了。"
end if
response.write cbegin_time &" 到 " &cend_time &"共有:" &numberOfMonths &"月"

%>
<% '**********************************************************************
'得到的各种时间,
'cbegin_time到月底的时间:beginOfDays,如果为0,整月+1
'beginTimeOfDays:cbegin_time所在的时间的该月的天数
'cend_time到月初的时间:endOfdays,如果为0,整月+1
'endTimeOfDays:cend_time所在的时间的该月的天数
'cbegin_time到cend_time包含的整月:numberOfMonths,
' 如果numberOfMonths=-1说明2个时间在同一个月中,
' 如果numberOfMonths= 0说明2个时间在连续的两个月中.
'cbegin_time到cend_time的天数:numberOfDays

strsql_time = " select case "
strsql_time= strsql_time &" when day('"&cbegin_time &"')=1 then 0 "
strsql_time= strsql_time &" else datediff(day,'"&cbegin_time &"',DATEADD(mm, 1,DATENAME (yy, '"&cbegin_time &"')+'-'+DATENAME (mm, '"&cbegin_time &"')+'-1')) "
strsql_time= strsql_time &" end as beginOfDays,"
strsql_time= strsql_time &" day(DATEADD(dd,-1,DATEADD(mm, 1,DATENAME (yy, '"&cbegin_time &"')+'-'+DATENAME (mm, '"&cbegin_time &"')+'-1'))) as beginTimeOfDays,"
strsql_time= strsql_time &" case "
strsql_time= strsql_time &" when day('" &cend_time &"')=day(DATEADD(dd,-1,DATEADD(mm, 1,DATENAME (yy, '" &cend_time &"')+'-'+DATENAME (mm, '" &cend_time &"')+'-1'))) then 0 "
strsql_time= strsql_time &" else day('" &cend_time &"')"
strsql_time= strsql_time &" end as endOfdays,"
strsql_time= strsql_time &" day(DATEADD(dd,-1,DATEADD(mm, 1,DATENAME (yy, '"&cend_time &"')+'-'+DATENAME (mm, '"&cend_time &"')+'-1'))) as endTimeOfDays,"
strsql_time= strsql_time &" datediff(MM,'"&cbegin_time &"','" &cend_time &"')-1 as numberOfMonths,"
strsql_time= strsql_time &" datediff(dd,'"&cbegin_time &"','" &cend_time &"')+1 as numberOfDays"

set rs2=cnn.execute(strsql_time)
beginOfDays = rs2("beginOfDays")
beginTimeOfDays = rs2("beginTimeOfDays")
endOfdays = rs2("endOfdays")
endTimeOfDays = rs2("endTimeOfDays")
numberOfMonths = rs2("numberOfMonths")
numberOfDays = rs2("numberOfDays")
if beginOfDays = 0 then
numberOfMonths=numberOfMonths+1
end if
if endOfdays = 0 then
numberOfMonths=numberOfMonths+1
end if

response.write cbegin_time &"到该月底有" &beginOfDays &"天<br>"
if beginOfDays = 0 then
response.write "这个月可以算成一个整月了。"
end if
response.write cend_time &"到该月首有" &endOfdays &"天<br>"
if endOfdays = 0 then
response.write "这个月可以算成一个整月了。"
end if
response.write cbegin_time &" 到 " &cend_time &"共有:" &numberOfMonths &"月"
'*******************************************************************
%>
一个是通过SQL来得到时间。
一个是用ASP直接得到时间。
哪个效率高呢?
tigerwen01 2003-06-02
  • 打赏
  • 举报
回复
(接上)
LCase()
 FUNCTION:  返回字符串的小写形式
 SYNTAX: Lcase(string)
 ARGUMENTS: string is any valid string expression.
 EXAMPLE: <%
strTest = "This is a test!"
response.write LCase(strTest)
%>
 RESULT: this is a test!
 
Left()
 FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).
 SYNTAX: Left(string, length)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test!"
response.write Left(strTest, 3)
%>
 RESULT: Thi
 
Len()
 FUNCTION: 返回字符串的长度.
 SYNTAX: Len(string | varName)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test!"
response.write Len(strTest)
%>
 RESULT: 15
 
LTrim()
 FUNCTION: 去掉字符串左边的空格.
 SYNTAX: LTrim(string)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = " This is a test!"
response.write LTrim(strTest)
%>
 RESULT: This is a test!
 
Mid()
 FUNCTION: 返回特定长度的字符串(从start开始,长度为length).
 SYNTAX: Mid(string, start [, length])
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test! Today is Monday."
response.write Mid(strTest, 17, 5)
%>
 RESULT: Today
 
Minute()
 FUNCTION: 返回时间的分钏.
 SYNTAX: Minute(time)
 ARGUMENTS: 
 EXAMPLE: <%=Minute(#12:45:32 PM#)%>
 RESULT: 45
 
Month()
 FUNCTION: 返回日期.
 SYNTAX: Month(date)
 ARGUMENTS: date is any valid date expression.
 EXAMPLE: <%=Month(#08/04/99#)%>
 RESULT: 8
 
MonthName()
 FUNCTION: Returns a string identifying the specified month.
 SYNTAX: MonthName(month, [, Abb])
 ARGUMENTS: month is the numeric representation for a given month; Abb
(optional) is a boolean value used to display month abbreviation. True
will display the abbreviated month name and False (default) will not show
the abbreviation.
 EXAMPLE: <%=MonthName(Month(#08/04/99#))%>
 RESULT: August
 
Now()
 FUNCTION: Returns the current system date and time.
 SYNTAX: Now()
 ARGUMENTS: None
 EXAMPLE: <%=Now%>
 RESULT: 8/4/99 9:30:16 AM
 
Replace()
 FUNCTION: Returns a string in which a specified sub-string has been
replaced with another substring a specified number of times.
 SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start
][, count ][, compare>])
 ARGUMENTS: strToBeSearched is a string expression containing a sub-
string to be replaced; strSearchFor is the string expression to search for
within strToBeSearched; strReplaceWith is the string expression to replace
sub-string strSearchFor; start (optional) is the numeric character
position to begin search; count (optional) is a value indicating the
comparision constant.
 EXAMPLE: <%
strTest = "This is an apple!"
response.write Replace(strTest, "apple", "orange")
%>
 RESULT: This is an orange!
 
Right()
 FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符).
 SYNTAX: Right(string, length)
 ARGUMENTS: .
 EXAMPLE: <%
strTest = "This is an test!"
response.write Right(strTest, 3)
%>
 RESULT: st!
 
Rnd()
 FUNCTION: 产生一个随机数.
 SYNTAX: Rnd [ (number) ]
 ARGUMENTS: 
 EXAMPLE: <%
Randomize()
response.write RND()
%>
 RESULT: 任何一个在0 到 1 之间的数
 
Round()
 FUNCTION: 返回按指定位数进行四舍五入的数值.
 SYNTAX: Round(expression [, numRight])
 ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则
Round 函数返回整数.
 EXAMPLE: <%
i = 32.45678
response.write Round(i)
%>
 RESULT: 32
 
Rtrim()
 FUNCTION: 去掉字符串右边的字符串.
 SYNTAX: Rtrim(string)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test!! "
response.write RTrim(strTest)
%>
 RESULT: This is a test!!
 
Second()
 FUNCTION: 返回秒.
 SYNTAX: Second(time)
 ARGUMENTS: .
 EXAMPLE: <%=Second(#12:34:28 PM#)%>
 RESULT: 28
 
StrReverse()
 FUNCTION: 反排一字符串
 SYNTAX: StrReverse(string)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test!!"
response.write StrReverse(strTest)
%>
 RESULT: !!tset a si sihT
 
Time()
 FUNCTION: 返回系统时间.
 SYNTAX: Time()
 ARGUMENTS: .
 EXAMPLE: <%=Time%>
 RESULT: 9:58:28 AM
 
Trim()
 FUNCTION: 去掉字符串左右的空格.
 SYNTAX: Trim(string)
 ARGUMENTS: string is any valid string expression.
 EXAMPLE: <%
strTest = " This is a test!! "
response.write Trim(strTest)
%>
 RESULT: This is a test!!
 
UBound()
 FUNCTION: 返回指定数组维数的最大可用下标.
 SYNTAX: Ubound(arrayname [, dimension])
 ARGUMENTS: ; dimension (optional) 指定返回哪一维上界的整数。1 表示第一
维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1.
 EXAMPLE: <%
i = Array("Monday","Tuesday","Wednesday")
response.write UBound(i)
%>
 RESULT: 2
 
UCase()
 FUNCTION: 返回字符串的大写形式.
 SYNTAX: UCase(string)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "This is a test!!"
response.write UCase(strTest)
%>
 RESULT: THIS IS A TEST!!
 
VarType()
 FUNCTION: 返回指示变量子类型的值
 SYNTAX: VarType(varName)
 ARGUMENTS: 
 EXAMPLE: <%
i = 3
response.write varType(i)
%>
 RESULT: 2(数字)详见"asp常数"
 
WeekDay()
 FUNCTION: 返回在一周的第几天.
 SYNTAX: WeekDay(date [, firstdayofweek])
 ARGUMENTS: .
 EXAMPLE: <%
d = #8/4/99#
response.write Weekday(d)
%>
 RESULT: 4(星期三)
 
WeekDayName()
 FUNCTION: 返回一周第几天的名字.
 SYNTAX: WeekDayName(weekday [, Abb ][, firstdayofweek>)
 ARGUMENTS: Abb可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省
略, 默认值为 False,即不缩写星期各天的名称.firstdayofweek指明星期第一天的
数值
 EXAMPLE: <%
d = #8/4/99#
response.write WeekdayName(Weekday(d))
%>
 RESULT: Wednesday
 
Year()
 FUNCTION: 返回当前的年份.
 SYNTAX: Year(date)
 ARGUMENTS: 
 EXAMPLE: <%=Year(#8/4/99#)%>
 RESULT: 1999
tigerwen01 2003-06-02
  • 打赏
  • 举报
回复
给你一些非常有用的函数(包括你想要的那两个函数)
1.Array()
 FUNCTION: 返回一个数组
 SYNTAX: Array(list)
 ARGUMENTS: 字符,数字均可
 EXAMPLE: <%
Dim myArray()
For i = 1 to 7
  Redim Preserve myArray(i)
  myArray(i) = WeekdayName(i)
Next
%>
 RESULT: 建立了一个包含7个元素的数组myArray
myArray("Sunday","Monday", ... ... "Saturday")
 
2.CInt()
 FUNCTION: 将一个表达式转化为数字类型
 SYNTAX: CInt(expression)
 ARGUMENTS: 任何有效的字符均可
 EXAMPLE: <%
f = "234"
response.write cINT(f) + 2
%>
 RESULT: 236
转化字符"234"为数字"234",如果字符串为空,则返回0值 
 
3.CreateObject()
 FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。
 SYNTAX: CreateObject(objName)
 ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.
 EXAMPLE: <%
Set con = Server.CreateObject("ADODB.Connection")
%>
 RESULT: 
 
4.CStr()
 FUNCTION: 转化一个表达式为字符串.
 SYNTAX: CStr(expression)
 ARGUMENTS: expression 是任何有效的表达式。
 EXAMPLE: <%
s = 3 + 2
response.write "The result is: " & cStr(s)
%>
 RESULT: 转化数字“5”为字符“5”。
 
5.Date()
 FUNCTION: 返回当前系统日期.
 SYNTAX: Date()
 ARGUMENTS: None.
 EXAMPLE: <%=Date%>
 RESULT: 8/4/99
 
6.DateAdd()
 FUNCTION: 返回一个被改变了的日期。
 SYNTAX: DateAdd(timeinterval,number,date)
 ARGUMENTS: timeinterval is the time interval to add; number is amount of
time intervals to add; and date is the starting date.
 EXAMPLE: <%
currentDate = #8/4/99#
newDate = DateAdd("m",3,currentDate)
response.write newDate
%>

<%
currentDate = #12:34:45 PM#
newDate = DateAdd("h",3,currentDate)
response.write newDate
%>
 RESULT: 11/4/99
3:34:45 PM

"m" = "month";
"d" = "day";

If currentDate is in time format then,
"h" = "hour";
"s" = "second";
 
DateDiff()
 FUNCTION: 返回两个日期之间的差值 。
 SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek ][,
firstweekofyear>)
 ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。
 EXAMPLE: <%
fromDate = #8/4/99#
toDate = #1/1/2000#
response.write "There are " & _
  DateDiff("d",fromDate,toDate) & _
  " days to millenium from 8/4/99."
%>
 RESULT: 从8/4/99 到2000年还有 150 天.
 
Day()
 FUNCTION: 返回一个月的第几日 .
 SYNTAX: Day(date)
 ARGUMENTS: date 是任何有效的日期。 
 EXAMPLE: <%=Day(#8/4/99#)%>
 RESULT: 4
 
FormatCurrency()
 FUNCTION: 返回表达式,此表达式已被格式化为货币值 
 SYNTAX: FormatCurrency(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit>>)
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的
零。 
 EXAMPLE: <%=FormatCurrency(34.3456)%>
 RESULT: $34.35
 
FormatDateTime()
 FUNCTION: 返回表达式,此表达式已被格式化为日期或时间
 SYNTAX: FormatDateTime(Date, [, NamedFormat])
 ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用
vbGeneralDate.
 EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%>
 RESULT: Wednesday, August 04, 1999
 
FormatNumber()
 FUNCTION: 返回表达式,此表达式已被格式化为数值.
 SYNTAX: FormatNumber(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit>>)
 ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是
计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -
1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认
值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数
的数值。默认值为 -1,指示使用的是计算机的区域设置。.
 EXAMPLE: <%=FormatNumber(45.324567, 3)%>
 RESULT: 45.325
 
FormatPercent()
 FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以
100 )。 (%)
 SYNTAX: FormatPercent(Expression [, Digit ][, LeadingDigit ][, Paren ][,
GroupDigit>>)
 ARGUMENTS: 同上.
 EXAMPLE: <%=FormatPercent(0.45267, 3)%>
 RESULT: 45.267%
 
Hour()
 FUNCTION: 以24时返回小时数.
 SYNTAX: Hour(time)
 ARGUMENTS: 
 EXAMPLE: <%=Hour(#4:45:34 PM#)%>
 RESULT: 16
(Hour has been converted to 24-hour system)
 
Instr()
 FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.
 SYNTAX: Instr([start, ] strToBeSearched, strSearchFor [, compare])
 ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串 
strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)
 EXAMPLE: <%
strText = "This is a test!!"
pos = Instr(strText, "a")
response.write pos
%>
 RESULT: 9
 
InstrRev()
 FUNCTION: 同上,只是从字符串的最后一个搜索起
 SYNTAX: InstrRev([start, ] strToBeSearched, strSearchFor [, compare])
 ARGUMENTS: 同上.
 EXAMPLE: <%
strText = "This is a test!!"
pos = InstrRev(strText, "s")
response.write pos
%>
 RESULT: 13

 
Int()
 FUNCTION: 返回数值类型,不四舍五入,注意取值是不大于它的整数。
 SYNTAX: Int(number)
 ARGUMENTS: 
 EXAMPLE: <%=INT(32.89)%>  <%=int(-3.33)%>
 RESULT: 32  -4
 
IsArray()
 FUNCTION: 判断一对象是否为数组,返回布尔值 .
 SYNTAX: IsArray(name)
 ARGUMENTS: 
 EXAMPLE: <%
strTest = "Test!"
response.write IsArray(strTest)
%>
 RESULT: False
 
IsDate()
 FUNCTION: 判断一对象是否为日期,返回布尔值
 SYNTAX: IsDate(expression)
 ARGUMENTS: expression is any valid expression.
 EXAMPLE: <%
strTest = "8/4/99"
response.write IsDate(strTest)
%>
 RESULT: True
 
IsEmpty()
 FUNCTION: 判断一对象是否初始化,返回布尔值.
 SYNTAX: IsEmpty(expression)
 ARGUMENTS: 
 EXAMPLE: <%
Dim i
response.write IsEmpty(i)
%>
 RESULT: True
 
IsNull()
 FUNCTION: 判断一对象是否为空,返回布尔值.
 SYNTAX: IsNull(expression)
 ARGUMENTS: 
 EXAMPLE: <%
Dim i
response.write IsNull(i)
%>
 RESULT: False
 
IsNumeric()
 FUNCTION: 判断一对象是否为数字,返回布尔值.
 SYNTAX: IsNumeric(expression)
 ARGUMENTS: 
 EXAMPLE: <%
i = "345"
response.write IsNumeric(i)
%>
 RESULT: True
就算数字加了引号,ASP还是认为它是数字。
 
IsObject()
 FUNCTION: 判断一对象是否为对象,返回布尔值.
 SYNTAX: IsObject(expression)
 ARGUMENTS: 
 EXAMPLE: <%
Set con = Server.CreateObject("ADODB.Connection")
response.write IsObject(con)
%>
 RESULT: True
 
LBound()
 FUNCTION: 返回指定数组维的最小可用下标.
 SYNTAX: Lbound(arrayname [, dimension])
 ARGUMENTS: ; dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2
表示第二维,以此类推。如果省略 dimension 参数,默认值为 1.
 EXAMPLE: <%
i = Array("Monday","Tuesday","Wednesday")
response.write LBound(i)
%>
 RESULT: 0
 
(待续)
BrightEye 2003-06-02
  • 打赏
  • 举报
回复
datediff("m",date1,date2)
summercat 2003-06-02
  • 打赏
  • 举报
回复
学习...
gq 2003-06-02
  • 打赏
  • 举报
回复
呵呵。。能否有点新东西。。
jobine 2003-06-02
  • 打赏
  • 举报
回复
一下是计算日期间整月数和一个日期到月底的天数。计算两个日期之间的天数应该不难,效率也很高。
<%
fromDate="2003-1-2"
endDate="2004-1-31"

function findMonth(fromDate,endDate)
interval=Datediff("m",fromDate,endDate)
if datepart("d",fromdate)>1 then
interval=interval-1
end if

if datepart("d",dateadd("d",1,enddate))<>1 then
interval=interval-1
end if
findMonth=fromdate & "与" & enddate & "之间有" & interval & "个整月。" & "<br>"
end function

response.Write findMonth(fromdate,enddate)

function findDay(dt)
interval=Datediff("d",dt,DateAdd("m",1,dt))
interval=interval-Datepart("d",dt)
findDay=dt & "到月底还有" & interval & "天。" & "<br>"
end function

response.Write findday(fromdate)
%>
lqflsh 2003-05-30
  • 打赏
  • 举报
回复
http://blacklong.myetang.com/teachdown/vbscript.chm 304K

我觉得你需要这本书。
fason 2003-05-30
  • 打赏
  • 举报
回复
返回两个日期之间的时间间隔。
语法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateDiff 函数的语法有以下参数:

参数 描述
interval 必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。
date1, date2 必选。日期表达式。用于计算的两个日期。
firstdayofweek 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
firstweekofyear 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。


设置
interval 参数可以有以下值:
设置 描述
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
m 分钟
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 表示相差一个年份。

cpp2017 2003-05-30
  • 打赏
  • 举报
回复
描述
返回两个日期之间的时间间隔。
语法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateDiff 函数的语法有以下参数:

参数 描述
interval 必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值,请参阅“设置”部分。
date1, date2 必选。日期表达式。用于计算的两个日期。
firstdayofweek 可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
firstweekofyear 可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。


设置
interval 参数可以有以下值:
设置 描述
yyyy 年
q 季度
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 小时
m 分钟
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 表示相差一个年份。

0
gq 2003-05-30
  • 打赏
  • 举报
回复
呵呵。。需要的时候我会去看。

28,403

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧