将随机时间添加到 DateTime 值

Adding random time to DateTime value

我想在日期中添加 1-30 分钟之间的随机时间,但 ColdFusion 似乎不喜欢它。无论我 运行 以下代码多少次,它都会将相同的分钟数添加到 Now() 值。我不明白为什么。

<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 服务器中的日期时间值的样子,这就是我计划插入未来日期的地方。

如果我 运行 上面的代码我一直得到这个输出:

2017-11-25 22:11:24 and then suddenly it will change to 2017-11-25 21:11:16 which is taking away a whole hour when I only want to add to the time!

它为什么这样表现是没有道理的。我在英国,但我使用 SQL 服务器默认格式的国际日期格式,如上所示。

更新:这是一个打字错误! DateTimeFormat 应为 yyyy-mm-dd HH:nn:ss.l。 'nn' 是分钟,而不是 'mm'。哦!

如果您使用分钟,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

整个问题归结为打字错误。应该是HH:nn:ss。请注意 nn 而不是 mm 分钟。