vincenthan 2008-6-27 17:54
如何生成两个日期之间的随机值
如生成在2008-06-01到2009-01-04范围内的随机日期
xiaoyaoke 2008-6-27 18:39
Function GetRanDate
For i = 0 to 100
Dim sYear,sMonth,sDay
Randomize
sYear = Int((4 * Rnd) + 2004)
Randomize
sMonth = Int((12*Rnd)+1)
Randomize
sDay = Int((31*Rnd)+1)
sGetRanDate = sYear &"-"&sMonth&"-"&sDay
sResult = RegExpTest("^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$",sGetRanDate)
If sResult = True Then
GetRanDate = sGetRanDate
Exit For
End If
Next
End Function
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置是否区分大小写。
retVal = regEx.Test(strng) ' 执行搜索测试。
If retVal Then
RegExpTest =True
Else
RegExpTest = False
End If
End Function
msgbox GetRanDate
写的比较取巧,不过能用
hsjzfling 2008-6-28 10:27
[code]Function RndDate(dFrom, dTo)
Dim dDate
dDate = CDate(dTo) - CDate(dFrom)
Randomize
RndDate = CDate(dFrom) + CInt(Rnd()*dDate)
End Function[/code]'For example
MsgBox RndDate("2008-06-01", "2009-01-04")
xiaoyaoke 2008-6-29 18:29
[quote]原帖由 [i]hsjzfling[/i] 于 2008-6-28 10:27 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=1004621&ptid=118783][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
Function RndDate(dFrom, dTo)
Dim dDate
dDate = CDate(dTo) - CDate(dFrom)
Randomize
RndDate = CDate(dFrom) + CInt(Rnd()*dDate)
End Function'For example
MsgBox RndDate("2008-06-01", "2009-01-0 ... [/quote]
赞一个,简便好用,呵呵
vincenthan 2008-6-30 16:26
:L 果然高手如云啊,看来我得努力了