如何将Unix时间戳(从纪元开始的秒数)转换为Ruby DateTime
很抱歉,突触短暂失效。这是真正的答案
需要“日期”
时间.at(自\u历元\u整数起的秒数)。到\u日期时间
简要示例(这考虑了当前系统时区):
$date+%s
1318996912
$irb
ruby-1.9.2-p180:001>;需要“日期”
=>;符合事实的
ruby-1.9.2-p180:002>;时间。在(1318996912)。到日期时间
=>#&书信电报;日期时间:2011-10-18T23:01:52-05:00(13261609807/5400,-5/242299161);
进一步更新(适用于UTC):
ruby-1.9.2-p180:003>;时间。在(1318996912)。utc.to_日期时间
=>#&书信电报;日期时间:2011-10-19T04:01:52+00:00(13261609807/5400,0/12299161);
最新更新:一两周前,我在使用HA服务时对该线程中的顶级解决方案进行了基准测试,并惊讶地发现Time.at(..)优于DateTime.strtime(..)(更新:添加了更多基准测试)
#~%ruby-v
#=>;ruby 2.1.5p273(2014-11-13修订版48405)[x86_64-darwin13.0]
irb(主要):038:0>;基准测试
irb(主要):039:1*[“1318996912”,“1318496912”]。每个|
irb(主):040:2*DateTime.strtime(s,“%s”)
irb(主要):041:2>;终止
irb(主要):042:1>;终止
=>#&书信电报;基准@实际值[email protected]总计=0.0>;
irb(主要):044:0>;基准测试
irb(主要):045:1>;[13189969121318496912]。每一个都做|
irb(主要):046:2>;DateTime.strtime(i.to_s,“%s”)
irb(主要):047:2>;终止
irb(主要):048:1>;终止
=>#&书信电报;基准@实际值[email protected]总计=0.0>;
irb(主):050:0*Benchmark.do
irb(主要):051:1*[“1318996912”,“1318496912”]。每个|
irb(主要):052:2*时间。时间(s.to_i)。to_日期时间
irb(主要):053:2>;终止
irb(主要):054:1>;终止
=>#&书信电报;基准@实际值[email protected]总计=0.0>;
irb(主):056:0*Benchmark.do
irb(main):057:1*[13189969121318496912]。每个do | i|
irb(主要):058:2*时间。在(i)至(u)日期时间
irb(主要):059:2>;终止
内部评级(主要):060:1>;终止
=>#&书信电报;基准@实际值[email protected]总计=0.0>;