以小时为单位获取两个日期之间的差异

时间:2014-02-02 07:33:06

标签: scala jodatime

我正在尝试计算两个joda日期之间的小时差异。

val d1 = getDateTime1()
val d2 = getDateTime2()

这是我做的:

# attemp1
val hours = Hours.hoursBetween(d1, d2) // error - types mismatch

# attempt2
val p = Period(d1, d2, PeriodType.hours()) // error - there is such a constructor
p.getHours

那我该怎么做?

1 个答案:

答案 0 :(得分:5)

getDateTime1的类型应为org.joda.time.DateTime

这很好:

val d1: org.joda.time.DateTime = DateTime.now
val d2: org.joda.time.DateTime = DateTime.nextMonth

val hours = Hours.hoursBetween(d1, d2)
// org.joda.time.Hours = PT672H

apply没有工厂方法Period,您应该使用new来创建Period

val p = new Period(d1, d2, PeriodType.hours())
// org.joda.time.Period = PT672H

如果您使用nscala-time,您还可以使用方法to获取Interval,然后将其转换为Period

d1 to d2 toPeriod PeriodType.hours
// org.joda.time.Period = PT672H

(d1 to d2).duration.getStandardHours
// Long = 672

同时尝试sbt clean