爲什麼以下不同?Ruby日期方程未返回預期真值
Time.now.end_of_day == Time.now.end_of_day - 0.days # false
Time.now.end_of_day.to_s == Time.now.end_of_day - 0.days.to_s # true
爲什麼以下不同?Ruby日期方程未返回預期真值
Time.now.end_of_day == Time.now.end_of_day - 0.days # false
Time.now.end_of_day.to_s == Time.now.end_of_day - 0.days.to_s # true
像米沙表示,倍納秒不同。 Here是一篇關於在Rails中完成此工作的解決方法和修復的文章,專門針對您正在執行的測試。
給出的看似最直接的方法是通過追加.to_i
將時間舍入到秒,但還有其他選擇。
要擴大米莎的回答是:
從docs on the Time object:「所有的時間可能有部分相互-時候顯示時相比,可以不同於顯然是相等的比較次的時候要注意這一點。 「
因此,您的第一次計算比較兩個時間對象,它們在納秒級別不同,但第二次計算將兩個時間對象都轉換爲字符串,這會忽略納秒並返回true,因爲兩個字符串表示形式都匹配。
什麼'Time.now.end_of_day.to_s == Time.now.end_of_day.to_s - ((1 - 1)* 7).days.to_s' return than?或者'也許'Time.now.end_of_day.to_s ==(Time.now.end_of_day - ((1 - 1)* 7).days).to_s' –
@Progro,那不能解決它。我認爲豪爾赫是對的,你必須使用'to_i'。 – Mischa
@Mischa多麼有趣;感謝您糾正我。 – Phrogz