将随机时间添加到DateTime值

时间:2017-11-25 21:55:00

标签: datetime coldfusion coldfusion-10 coldfusion-11 coldfusion-2016

我想在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 Server中的日期时间值看起来像我计划插入未来日期的地方。

如果我运行上面的代码,我会继续得到这个输出:

  

2017-11-25 22:11:24   然后突然间它会变成 2017-11-25 21:11:16 ,当我只想增加时间时,它会带走整整一个小时!

为什么它的表现如此毫无意义。我在英国,但我使用的是SQL Server默认格式的国际日期格式,如上所述。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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