簡體   English   中英

如何在VB腳本中每次在開始日期到結束日期范圍之間生成隨機日期DDMMYYYY格式?

[英]how to generate random date DDMMYYYY format between start date-end date range every time in vb scripts?

我是vb腳本的新手,請幫助我。

我正在通過隨機添加最后兩位數字來生成隨機年份,如下所示,但我想在用戶提供的開始日期和結束日期之間生成隨機日期DDMMYYYY格式。

Randomize
tmp = Int((92 - 70 + 1) * Rnd + 70)
tmp1= "01/05/19" & tmp

以此為起點

Option Explicit

Function getRandomDate( startDate, endDate )
    getRandomDate = DateAdd( _ 
        "d" _ 
        , Fix( DateDiff("d", startDate, endDate ) * Rnd ) _ 
        , startDate _ 
    )
End Function

Dim startDate, endDate 
    startDate = CDate("2016/03/10")
    endDate = CDate("2017/09/30")

    Randomize

Dim i
    For i = 0 To 100
        WScript.Echo getRandomDate( startDate, endDate )
    Next 

它只是計算開始日期和結束日期之間的天數,並在此天數范圍內選擇一個隨機數以添加到開始日期。

作為@ mc-nd 答案的附錄

當使用Rnd()生成隨機數時,請確保使用“ Randomize來初始化隨機數生成器,並將“系統時間”用作種子值,否則會發生這種情況。

Option Explicit

Function getRandomDate( startDate, endDate )
    getRandomDate = DateAdd( _ 
        "d" _ 
        , Fix( DateDiff("d", startDate, endDate ) * Rnd ) _ 
        , startDate _ 
    )
End Function

Dim startDate, endDate 
    startDate = CDate("2016/03/10")
    endDate = CDate("2017/09/30")

Dim i
    For i = 0 To 10
        WScript.Echo getRandomDate( startDate, endDate )
    Next 

第一輸出:

15/04/2017
07/01/2017
02/02/2017
21/08/2016
28/08/2016
24/05/2017
17/03/2016
16/05/2017
16/06/2017
17/04/2017
04/04/2016

第二輸出:

15/04/2017
07/01/2017
02/02/2017
21/08/2016
28/08/2016
24/05/2017
17/03/2016
16/05/2017
16/06/2017
17/04/2017
04/04/2016

在代碼中添加Randomize語句以查看差異;

Option Explicit

Function getRandomDate( startDate, endDate )
    getRandomDate = DateAdd( _ 
        "d" _ 
        , Fix( DateDiff("d", startDate, endDate ) * Rnd ) _ 
        , startDate _ 
    )
End Function

Dim startDate, endDate 
    startDate = CDate("2016/03/10")
    endDate = CDate("2017/09/30")

Dim i
    'Call the random number generator with the system time as the seed.
    Call Randomize()

    For i = 0 To 10
        WScript.Echo getRandomDate( startDate, endDate )
    Next

第一輸出:

14/11/2016
28/09/2016
26/05/2016
06/01/2017
22/09/2016
13/06/2016
12/11/2016
05/03/2017
05/05/2016
01/05/2016
03/02/2017

第二輸出:

08/03/2017
20/01/2017
18/04/2016
29/11/2016
16/08/2016
07/05/2016
06/10/2016
27/01/2017
22/07/2016
19/07/2016
21/09/2017

這是一件容易錯過的事情,但有很大的不同。

Dim Date1 As Date, Date2 As Date
Date1 = 10/02/2017
Date2 = 10/06/2017
iDiff = DateDiff("d", Date1, Date2, vbMonday)
Dim RndDate As Date
Randomize
RndDate = DateAdd("d", Int((iDiff * Rnd) + 1), Date1)

我發現生成隨機日期的簡單方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM