2013-04-08 61 views

回答

3

雖然Time.to_r在1.8.7不可用,Time.to_f是:

t = Time.now 
t == Time.at(t.to_f) 
# => true 

更新:由於原來你想要做它在1.8.7和2.0/1.9相同的方式。 3,我會指出to_f仍然是最好的選擇。雖然

t == Time.at(t.to_f) 

現在返回false,只是因爲在1.9.3/2.0的Time對象具有比浮動甚至更高的精度。

t.to_f == Time.at(t.to_f).to_f 
# => true 

t - Time.at(t.to_f) 
# => 8.09310302734375e-08 

這些是在轉換爲浮點時丟失的微秒的小部分。

+0

麻煩是time.to_f在1.8.7中工作,但在1.9.3中無法正常工作,所以你沒有一致的序列化格式 – 2013-04-08 06:24:04

+1

@SamSaffron首先,你的問題並沒有讓你清楚你想要什麼在1.8.7 - 2.0.0之間工作的東西;你只是要求1.8.7的方式。你應該澄清一點。其次,它確實*工作*,因爲它給你提供了亞微秒的精度,這幾乎肯定是足夠好的。 – 2013-04-08 06:29:11

+0

是啊to_f應該把它切開,只需要確保其他區域的代碼都知道它,結果鏈輪已經有一堆to_i隱藏在各種可能簡化事情的地方......對於上下文https:// github .COM/sstephenson /鏈輪/拉/ 428 – 2013-04-08 08:16:28