Time.current給我超越秒的精度:
> Time.current
Fri, 11 Feb 2022 23:00:18.253185000 UTC 00:00
> Time.current.to_f
1644620430.942064
但Time.at失去了精度:(
> Time.at(1644620430.942064).utc
2022-02-11 23:00:30 UTC
整個.942064被截斷了。這弄亂了一些比較日期的測驗,因為時間戳似乎以毫秒為單位,但我不知道如何創建一個包含毫秒的時間
如何將毫秒變數轉換為時間?
uj5u.com熱心網友回復:
據我了解,您需要納秒級精度
Time::at有這樣的形式
time = Time.current
# => Fri, 11 Feb 2022 23:36:25.983398537 UTC 00:00
float_time = time.to_f
# => 1644622585.9833987
secs = float_time.floor
# => 1644622585
nsecs = time.nsec
# => 983398537
Time.at(secs, nsecs, :nsec).utc
# => 2022-02-11 23:36:25.983398537 UTC
您可以使用以下鍵之一選擇精度:
:msec是范圍內的毫秒數(Integer、Float或Rational)0..1000:usec是范圍內的微秒數(Integer、Float或Rational)0..1000000:nseckey 是范圍內的納秒數(Integer、Float或Rational)0..1000000000
你也可以utc打電話Time.current
time = Time.current
# => Fri, 11 Feb 2022 23:36:25.983398537 UTC 00:00
time.utc
# => 2022-02-11 23:36:25.983398537 UTC
uj5u.com熱心網友回復:
我認為您只是看到了格式問題。考慮:
Time.at(1644620430.942064).strftime('%Y-%m-%dT%H:%M:%S.%N')
# 2022-02-11T15:00:30.942064046
但是,如果您致電to_s:
Time.at(1644620430.942064).to_s
# "2022-02-11 15:00:30 -0800"
Time.at(1644620430.942064).utc.to_s
# "2022-02-11 23:00:30 UTC"
你只能得到一秒解析度的結果。
完整的精確時間在那里,但在格式化時間時需要小心詢問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424099.html
