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