如何使用 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)
我正在使用 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)