如何使用 Scala 生成器生成具有范围的日期?

How can I use scala generators to generate date with range?

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

所以在我的生成器中 class 我有这样的东西:

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

但现在我想生成:

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

我该怎么做? 发送

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

  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)