gpt4 book ai didi

ruby - 我如何重构这段发现 Unix 时间结束的代码?

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:02 25 4
gpt4 key购买 nike

所以我决定制作一个脚本来告诉 Unix 时间重置之前还有多少时间(在 32 位系统上是 2038 年问题,2038-01-19 03:14:07)并且我很酷弄清楚了,但是这段代码看起来真的很糟糕,我知道必须有更好的方法来做到这一点。我考虑过使用 divmod,但看不出有什么帮助。这是我的代码,我很想知道我可以做些什么来重构它并提高可读性。

time = Time.now

end_of_unix_time = Time.gm(2038, 1, 19, 3, 14, 7).getlocal

diff = end_of_unix_time - time

years = (diff / 60 / 60 / 24 / 365).floor
days = (diff / 60 / 60 / 24 - (years * 365)).floor
hours = (diff / 60 / 60 - (years * 365 * 24) - (days * 24)).floor
min = (diff / 60 - (years * 365 * 24 * 60) - (days * 24 * 60) - (hours * 60)).floor
sec = (diff - (years * 365 * 24 * 60 * 60) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (min * 60)).floor

puts "#{years} years"
puts "#{days} days"
puts "#{hours} hours"
puts "#{min} minutes"
puts "#{sec} seconds"

最佳答案

end_of_unix_time = Time.at(2 ** 31 - 1)
diff = end_of_unix_time - Time.now
years, days, hours, min, sec =
[60, 60, 24, 365].each_with_object([diff]){|d, a| a[0..0] = a[0].divmod(d)}

puts "#{years} years"
puts "#{days} days"
puts "#{hours} hours"
puts "#{min} minutes"
puts "#{sec} seconds"

关于ruby - 我如何重构这段发现 Unix 时间结束的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495065/

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