' Time.at(秒)'给出不同于'分数的时间(秒/ 60,秒%60)'

时间:2017-06-06 05:56:44

标签: ruby

我正在执行此代码:

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分钟?

1 个答案:

答案 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