如何将unix时间戳(从纪元开始的秒数)转换为Ruby DateTime?

如何将Unix时间戳(从纪元开始的秒数)转换为Ruby DateTime

很抱歉,突触短暂失效。这是真正的答案

需要“日期”
时间.at(自\u历元\u整数起的秒数)。到\u日期时间

简要示例(这考虑了当前系统时区):

$date+%s
1318996912
$irb
ruby-1.9.2-p180:001>需要“日期”
=>符合事实的
ruby-1.9.2-p180:002>时间。在(1318996912)。到日期时间
=&gt#&书信电报;日期时间:2011-10-18T23:01:52-05:00(13261609807/5400,-5/242299161);

进一步更新(适用于UTC):

ruby-1.9.2-p180:003>时间。在(1318996912)。utc.to_日期时间
=&gt#&书信电报;日期时间: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>终止
=&gt#&书信电报;基准@实际值[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>终止
=&gt#&书信电报;基准@实际值[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>终止
=&gt#&书信电报;基准@实际值[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>终止
=&gt#&书信电报;基准@实际值[email protected]总计=0.0>

发表评论