0

我需要转换的日期时间到OLE,其实我有这样的代码转换Time.zone.now数点OLE

def self.convert_time(t=42941.6102054745) 
    Time.at((t - 25569) * 86400).utc 
    end 

但这种转换为DateTime现在我希望这个解决方案:

def self.date_time_ole(dt= Time.zone.now) 
# her convert to number ole from datetime 
end 

你可以帮我吗 ?

+0

什么是“数字OLE”? –

+0

将此实例的值转换为等效的OLE自动化日期。 –

+0

一个OLE自动化日期实现为一个浮点数,其整数部分是在1899年12月30日午夜之前或之后的天数,其小数部分表示当天的时间除以24 –

回答

0

Ruby的Date类减法返回的天数2日期间,所以你只需要减去你的“定制时代”(1899年12月30日,在午夜)从其他日期:

ole_epoch = DateTime.new(1899, 12, 30, 0, 0, 0) 
now = DateTime.now # => 2017-08-18 21:03:28 UTC 
(now - ole_epoch).to_f # => 42965.87741847492 

,并应成为OLE,你也可以直接添加到其他方式:

ole_epoch + 42965.87741847492 # => Fri, 18 Aug 2017 21:03:28 +0000