2011-12-07 46 views
4
scala> import net.liftweb.util.TimeHelpers._ 

import net.liftweb.util.TimeHelpers._ 

scala> 60.minutes == 1.hour 

res14: Boolean = false 

scala> 
+0

如果您在平等中顛倒順序會發生什麼?從源代碼看起來'.minutes'返回一個句點,'.hours'返回一個持續時間(Period的子類型),所以如果等於多態性的東西被打碎... – 2011-12-07 20:54:00

+0

哦,嗯。它似乎已經改變......有時。將https://github.com/lift/framework/blob/master/core/util/src/main/scala/net/liftweb/util/TimeHelpers.scala與http://olim7t.github.com/liftweb-2.0比較例如,-release-sxr/net/liftweb/util/TimeHelpers.scala.html。它可能是特定於某個特定版本的?至少,請指定*精確*升級版本 - 祝你好運:) – 2011-12-07 20:57:48

回答

3

據大衛波拉克(誰應該知道),這是由於喬達時間。見Is It a bug of liftweb TimeHelpers: 60.minutes not equals 1.hour

解決方案是轉換爲持續時間,然後比較這兩個值。來自Period.java

週期的定義也影響等於方法。一天 一天不等於24小時,也不等於一小時,等於60分鐘 分鐘。這是因爲期間代表一個時間段的抽象定義(例如,一天可能實際上不是24小時,它可能是在日光節約邊界處的23, 或25)。要比較 兩個週期的實際持續時間,請使用toDuration將兩者轉換爲持續時間,操作 強調結果可能會因您選擇的日期而有所不同。

此解決方案由andreak提供,在上面的鏈接到谷歌組線程,並在這裏複製,以便其他人可以在這裏找到它。

+0

'res0:Boolean = false'。另外,Lift 1.0已經很長時間了。 – Debilski

+0

@Debilski對,你是對的,這次做了一個更徹底的工作,並編輯了答案。然後 –

+0

+1。 – Debilski