我正在执行此代码:
t = DateTime.strptime('1:00:23', '%H:%M:%S')
t1 = DateTime.strptime('2:02:40', '%H:%M:%S')
t2 = t1.to_time - t.to_time
time_new = "#{(t2/3600).to_i}" + ":" +"#{((t2/60)%60).to_i}" + ":" + "#{(t2%60).to_i}"
time_units = time_new.split(':')
我明白了:
Time.at(t2).strftime("%H:%M:%S")
# => 06:32:17
"#{time_units[0]} hours, #{time_units[1]} minutes and #{time_units[2]} seconds"
# => 1 hours, 2 minutes and 17 seconds
非常不同。为什么Time.at(seconds)
会增加5小时30分钟?
答案 0 :(得分:2)
为什么
Time.at(seconds)
会增加5小时30分钟?
因为你要比较苹果和橘子。
DateTime.strptime
会在 UTC 中返回DateTime
个实例。如果您没有提供日期,则会使用今天的日期:
DateTime.strptime('01:00:23')
#=> Tue, 06 Jun 2017 01:00:23 +0000
# ^^^^^^^^^^^^^^^^ ^^^^^
# today UTC
Time.at
根据自纪元以来的秒数(1970年1月1日),在当地时区中返回Time
个实例:
Time.at(1 * 3600 + 23)
#=> 1970-01-01 02:00:23 +0100
# ^^^^^^^^^^ ^^^^^
# not today not UTC