如何减去scala中的天数?

时间:2019-04-01 01:00:47

标签: scala

我将字符串解析为日期:

val deathTime = "2019-03-14 05:22:45"
val dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val deathDate = new java.sql.Date(dateFormat.parse(deathtime).getTime)

现在,我想从deathDate中减去30天。怎么做?我尝试过

deathDate.minusDays(30)

它不起作用。

2 个答案:

答案 0 :(得分:1)

如果您的要求与spark-scala中的数据帧有关。

 df.select(date_add(lit(current_date),-30)).show
+-----------------------------+
|date_add(current_date(), -30)|
+-----------------------------+
|                   2019-03-02|
+-----------------------------+

date_add的负值函数或date_sub的正值可以达到预期效果。

答案 1 :(得分:0)

如果您是java8,则可以将日期解码为LocalDateTimeLocalDateTime允许对日期进行操作-https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#minusDays-long-

scala> import java.time.LocalDateTime
import java.time.LocalDateTime

scala> import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatter

scala> val deathTime = "2019-03-14 05:22:45"
deathTime: String = 2019-03-14 05:22:45

scala> val deathDate = LocalDateTime.parse(deathTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
deathDate: java.time.LocalDateTime = 2019-03-14T05:22:45

scala> deathDate.minusDays(30)
res1: java.time.LocalDateTime = 2019-02-12T05:22:45

另请参见Java: Easiest Way to Subtract Dates