我有 20170501 类型的日期键,其格式为 YYYYmmdd 。我们怎样才能在Scala中从这个日期算起x天?
这就是我在程序中所拥有的
val runDate = 20170501
现在我希望从这个日期起30天后再说一个日期。
答案 0 :(得分:2)
使用Scala / JVM / Java 8 ...
scala> import java.time._
import java.time._
scala> import java.time.format._
import java.time.format._
scala> val formatter = DateTimeFormatter.ofPattern("yyyyMMdd")
formatter: java.time.format.DateTimeFormatter = Value(YearOfEra,4,19,EXCEEDS_PAD)Value(MonthOfYear,2)Value(DayOfMonth,2)
scala> val runDate = 20170501
runDate: Int = 20170501
scala> val runDay = LocalDate.parse(runDate.toString, formatter)
runDay: java.time.LocalDate = 2017-05-01
scala> val runDayMinus30 = runDay.minusDays(30)
runDayMinus30: java.time.LocalDate = 2017-04-01
答案 1 :(得分:0)
你也可以使用具有非常好功能的joda-time API,如
date.minusMonths
date.minusYear
date.minusDays
date.minusHours
date.minusMinutes
以下是使用JodaTIme API'
的简单示例import org.joda.time.format.DateTimeFormat
val dtf = DateTimeFormat.forPattern("yyyyMMdd")
val dt= "20170531"
val date = dtf.parseDateTime(dt)
println(date.minusDays(30))
输出:
2017-05-01T00:00:00.000+05:45
为此,您需要使用udf
并使用您的输入格式创建DateTime
对象" YYYYmmdd
"并进行操作。
希望这有帮助!