2012-06-20 58 views
1

我试了很长时间才找到关于经典ASP中随机日期的帮助。 我想在两个日期之间创建一个随机日期。经典ASP随机日期

例如:我的随机日期必须介于2010-04-05和2012-04-05之间。

感谢您的帮助!

问候 莱纳斯

回答

1

你可以使用DateDiff函数和Rnd函数。 RND函数生成一个随机数,然后DATEDIFF差异比较来天

+0

谢谢!对我来说一个完美的解决方 – Rufuhs

+0

代码示例将大大改善此答案 – AnthonyWJones

+1

@ulluoink - 您是不是指DateAdd而不是DateDiff? –

0

试试这个:

<% 
Dim DDmax,DDmin,MMmax,MMmin,YYYYmax,YYYYmin 

MMmin=1 
MMmax=12 

DDmin=1 
DDmax=28 

YYYYmin=2010 
YYYYmax=2012 


Randomize 

dim strTmpDate,strTmpDateYEAR,strTmpDateMONTH,strTmpDateDAY 

strTmpDateYEAR=Int((YYYYmax-YYYYmin+1)*Rnd+YYYYmin) 
strTmpDateMONTH=Int((MMmax-MMmin+1)*Rnd+MMmin) 
strTmpDateDAY=Int((DDmax-DDmin+1)*Rnd+DDmin) 

if Len(strTmpDateMONTH)=1 then 
strTmpDateMONTH="0" & strTmpDateMONTH 
end if 

if Len(strTmpDateDAY)=1 then 
strTmpDateDAY="0" & strTmpDateDAY 
end if 

strTmpDate=strTmpDateYEAR & strTmpDateMONTH & strTmpDateDAY 

if strTmpDate > "20100405" and strTmpDate < "20120405" then 

strTmpDateYEAR=Int((YYYYmax-YYYYmin+1)*Rnd+YYYYmin) 
strTmpDateMONTH=Int((MMmax-MMmin+1)*Rnd+MMmin) 
strTmpDateDAY=Int((DDmax-DDmin+1)*Rnd+DDmin) 

if Len(strTmpDateMONTH)=1 then 
strTmpDateMONTH="0" & strTmpDateMONTH 
end if 

if Len(strTmpDateDAY)=1 then 
strTmpDateDAY="0" & strTmpDateDAY 
end if 

strTmpDate=strTmpDateYEAR & strTmpDateMONTH & strTmpDateDAY 

end if 
Response.write "Example A: " & strTmpDate & "<BR>" 
Response.write "Example B: " & Left(strTmpDate,4) & "-" & Mid(strTmpDate,5,2) & "-" & Right(strTmpDate,2) 
%> 
2

其实这是在VBScript中容易得多。

Randomize 
Function RandomDate(dtmStart, dtmEnd) 
    Dim dblDate 
    dblDate = (CDbl(dtmStart) - CDbl(dtmEnd)) * Rnd + CDbl(dtmEnd) 
    'dblDate = Int(dblDate) ' w/o time part, just date 
    RandomDate = CDate(dblDate) 
End Function 

Response.Write RandomDate(#1985/06/10#, Now()) 
+0

哇,完美!伟大的工作...... – compcobalt

+0

@ Kul-Tigin随机化(重新播种发电机)应该每个程序/脚本会话/运行调用一次,永远不会调用(可能)多次的例程,因为随机发生器旨在提供随机*数字序列*。 –

+0

@ Ekkehard.Horner你能帮我理解一下它又有什么问题吗?......(Thx for comment) – compcobalt