gpt4 book ai didi

ruby strftime 给出错误的时间

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:46 26 4
gpt4 key购买 nike

例如,时间戳是1403667010.574,使用Time.at(1403667010.574).strftime('%Y-%m-%d %H:%M:%S.%L %z'),则结果为

"2014-06-25 03:30:10.573 +0000"

它在结果上损失了 1 毫秒。那是 ruby 的错误吗?

对我来说,主要问题是,如果我将时间字符串转换为 Time.parse("2014-06-25 03:30:10.573 +0000").to_f,结果将是变为 1403667010.573。它不等于原始值

最佳答案

这就是 float 的工作原理。它们大致精确(并非绝对)。

t = Time.at(1403667010.574)
t.strftime('%Y-%m-%d %H:%M:%S.%L %z') # => "2014-06-25 07:30:10.573 +0400"

# more precision
t.strftime('%Y-%m-%d %H:%M:%S.%6N %z') # => "2014-06-25 07:30:10.573999 +0400"

# even more precision
t.strftime('%Y-%m-%d %H:%M:%S.%10N %z') # => "2014-06-25 07:30:10.5739998817 +0400"

另外,这就是Time#strftime documentation说到 %L 标志:

%L - Millisecond of the second (000..999) The digits under millisecond are truncated to not produce 1000.

因此,值 .573999 被截断(未四舍五入)为 .573

关于ruby strftime 给出错误的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com