2

我想在1-30分鐘之間添加一個隨機時間,但ColdFusion似乎並不喜歡它。無論我運行以下代碼多少次,它都會將相同數量的分鐘添加到Now()值。我無法弄清楚爲什麼。向DateTime值添加隨機時間

<cfset DateFuture = DateTimeFormat(DateAdd('n', RandRange(1, 30), Now()), 'yyyy-mm-dd HH:mm:ss.l')/> 
<cfoutput>#DateFuture#</cfoutput> 

我需要yyyy-mm-dd HH:mm:ss.l DateTimeFormat因爲這個東西在SQL Server中我datetime值看起來這是我打算插入我的未來日期。

如果我運行上面的代碼我不斷收到這樣的輸出:

2017年11月25日22時11分二十四秒 ,然後突然將變爲2017年11月25日21: 11:16當我只想增加時間時,它將帶走一整小時!

它沒有任何意義,爲什麼它的行爲是這樣的。我在英國,但是使用國際日期格式的SQL Server的默認格式,就像上面一樣。

更新:它是一個錯字! DateTimeFormat應該是yyyy-mm-dd HH:nn:ss.l。 'nn'是分鐘,而不是'mm'。 D'哦!

+1

我會試圖使用SQL Server的日期和時間。 SQL 2016具有更強大的一組功能。有一些udfs可以讓SQL 2014做各種各樣的事情。 –

+1

也許但肯定ColdFusion的功能應該像廣告一樣工作? –

+0

它是一個愚蠢的錯字。我使用HH:mm:ss的時候應該是HH:nn:ss –

回答

1

整個問題是下降到一個錯字。它應該是HH:nn:ss。請注意0​​而不是mm分鐘。

3

如果使用分鐘,1到30範圍不會給你很多值。

使用seconds [600至1800]或miliseconds [600000至1800000]可以使其更具隨機性。

<cfset miliSeconds = RandRange(600000, 1800000) /> 
<cfdump var="#miliSeconds#" /> 

<cfset DateFuture = DateTimeFormat(DateAdd('l', miliSeconds, now()), 'yyyy-mm-dd HH:nn:ss.l')/> 
<cfdump var="#DateFuture#" /> 


運行代碼: https://trycf.com/gist/f26ff8edbe1736e453ded06d5adf5076/lucee5?theme=monokai

+0

整個問題都歸結於拼寫錯誤。它應該是HH:nn:ss。注意'nn'而不是'mm'分鐘。 –