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'分钟。 –