Scala中两个日期之间的月差

HHH*_*HHH 1 scala jodatime

我在 Scala 中有两个格式为“yyyy-MM-dd”的日期,它们都是一个月的最后一天(2015-05-31),我想找到它们之间的月份差异。我有以下代码,但要找到月差并不容易。

 val format = new java.text.SimpleDateFormat("yyyy-MM-dd")         
 val diff = format.parse(date1).getTime - format.parse(date2).getTime

 val days = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)
Run Code Online (Sandbox Code Playgroud)

有什么更好的建议吗?

vir*_*sox 6

如果您使用的是 Java 8 或更高版本,则可以使用java.time包中的新日期和时间 API 。

首先,创建两个LocalDate对象:

import java.time._
val s1 = LocalDate.parse("2012-05-31")
val s2 = LocalDate.parse(otherDate)
Run Code Online (Sandbox Code Playgroud)

那么你有两个选择。第一个选项,ChronoUnit直接使用对象:

import java.time.temporal._
ChronoUnit.MONTHS.between(s1, s2)   // the answer you are looking for
Run Code Online (Sandbox Code Playgroud)

或者创建一个Period对象,用于表示时间段。

val p = Period.between(s1, s2)
p.getMonths() // returns the number of months between the two dates
Run Code Online (Sandbox Code Playgroud)

Period类有其他的方法,比如getDays(),使您能够获得关于两个日期之间的时间段的详细信息。

  • 很好的建议。请记住,“期间”充当较大单位的余数。对于相隔 15 个月的内容,“getMonths”将返回 3,“getYears”将返回 2。因此,我更喜欢“ChronoUnit.Months. Between”解决方案,它将返回 15。 (2认同)