【问题标题】:How to subtract days in scala?如何在scala中减去天数?
【发布时间】:2019-08-22 03:12:17
【问题描述】:

我将一个字符串解析为一个日期:

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)

现在,我想从死亡日期中减去 30 天。怎么做?我试过了

deathDate.minusDays(30)

它不起作用。

【问题讨论】:

标签: scala


【解决方案1】:

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

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

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

【讨论】:

  • 我认为 OP 是一个 scala 问题而不是 scala spark 问题。
【解决方案2】:

如果您是 java8,那么您可以将日期解码为LocalDateTime。 LocalDateTime 允许对日期进行操作 - 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2018-04-09
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2021-01-10
    相关资源
    最近更新 更多