【问题标题】:How can I use scala generators to generate date with range?如何使用 scala 生成器生成带范围的日期?
【发布时间】:2016-05-04 10:47:30
【问题描述】:

我正在使用 scalacheck,所以我将能够使用生成器。

所以在我的生成器类中,我有类似的东西:

invType <- Gen.oneOf(Seq("Communication", "Restaurants", "Parking"))
invoiceNumber <- Gen.choose(1, 10000)

但现在我想生成:

 invoiceDate = "1/1/2014" //todo: generate random date between 2013 - today

我该怎么做? tnx

【问题讨论】:

    标签: java scala scalatest scalacheck


    【解决方案1】:

    如果您可以生成完整的日期范围,那么您应该能够使用Gen.oneOf 从该范围中随机选择一个日期。您可以使用如下代码生成范围:

      val sf = new SimpleDateFormat("M/d/yyyy")
      val now = new Date
      val cal = Calendar.getInstance()
      cal.set(2013, 0, 1) //Jan 1 2013
    
      val dates = 
        Iterator.
          continually{
            val d = cal.getTime
            cal.add(Calendar.DAY_OF_YEAR, 1)
            sf.format(d)
          }.
          takeWhile(_ => cal.getTimeInMillis() <= now.getTime).
          toSeq
    

    那么从那里你应该可以做到:

    invDate <- Gen.oneOf(dates)
    

    【讨论】:

    • 我需要它作为字符串
    • @Joe,我修改为将其生成为字符串
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多