代码之家  ›  专栏  ›  技术社区  ›  volume one

将随机时间添加到日期时间值

  •  2
  • volume one  · 技术社区  · 7 年前

    我想给约会增加一个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中的datetime值,我计划在其中插入我的未来日期。

    如果我运行上述代码,我会不断得到以下输出:

    2017-11-25 22:11:24 然后它会突然变成 2017-11-25 21:11:16 当我只想增加时间的时候,这就占用了整整一个小时!

    它为什么这样做毫无意义。我在英国,但在SQL Server的默认格式中使用国际日期格式,如上所述。

    更新:这是一个打字错误!日期时间格式应为 yyyy-mm-dd HH:nn:ss.l . '“nn”是分钟,不是“mm”。哦!

    2 回复  |  直到 7 年前
        1
  •  3
  •   Alex Baban    7 年前

    如果你使用分钟,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
        2
  •  1
  •   James A Mohler    7 年前

    HH:nn:ss . 注意 nn 而不是 mm 几分钟。