向DateTime值添加随机时间
我想在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'哦!
整个问题是下降到一个错字。它应该是HH:nn:ss
。请注意0而不是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'分钟。 –
我会试图使用SQL Server的日期和时间。 SQL 2016具有更强大的一组功能。有一些udfs可以让SQL 2014做各种各样的事情。 –
也许但肯定ColdFusion的功能应该像广告一样工作? –
它是一个愚蠢的错字。我使用HH:mm:ss的时候应该是HH:nn:ss –