我有兩個字串日期
a = '2021-05-23 b = '2021-04-24"
我正在嘗試定義一個比較兩個字串日期的函式,如果 b 比 a 大一個月,則回傳 true。
誰能幫我?
謝謝
uj5u.com熱心網友回復:
這個問題有點不清楚,就像你的意思是差異正好是一個月?還是僅僅因為您提供的輸入示例的謂詞成立5 - 4 = 1?無論如何,我認為下面的代碼示例會給你這個想法:
import java.time.LocalDate
def isOneMonthGreater(dateString1: String, dateString2: String): Boolean =
(LocalDate.parse(dateString1).getMonthValue - LocalDate.parse(dateString2).getMonthValue) == 1
您還可以使用ChronoUnit:
import java.time.LocalDate
import java.time.temporal.ChronoUnit
val d1 = LocalDate.parse("2022-05-23")
val d2 = LocalDate.parse("2022-04-24")
val d3 = LocalDate.parse("2022-04-23")
ChronoUnit.MONTHS.between(d2, d1)
// the above expression returns 0, since 29 days is actually 0 months!
ChronoUnit.MONTHS.between(d3, d1)
// this one returns 1
大多數時候,日期作為字串也不是一個好習慣,因此更推薦使用實際日期型別的輸入。
更新:
如果不轉換為日期,您可以手動決議它,并且有很多方法可以做到這一點。需要記住的一件事是,正如評論中提到的,可能存在一些邊緣情況,但據我了解,這只是圍繞語言 API 進行探索。
- 使用正則運算式。您可以定義您確定的日期格式:
val pattern = "(\\d{4})-(\\d{2})-(\\d{2})".r
val dateString = "2022-03-02"
dateString match {
case pattern(year, month, day) => ...
}
// or
val pattern(year, month, day) = dateString
但如前所述,這是不安全的,只是為了表明這種方法存在。2)分裂:
dateString.split("-")
您可以根據需要處理陣列元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496948.html
標籤:斯卡拉
上一篇:Scala反透視表
