2

我想在日期中添加 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.lDateTimeFormat 因为这是我在 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'。哦!

4

2 回答 2

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

于 2017-11-25T22:55:39.187 回答
1

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

于 2017-12-01T12:28:55.930 回答