0

je dois convertir le DateTime à OLE, En fait, j'ai ce codeConvertir Time.zone.now au numéro OLE

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

mais convertit à DateTime maintenant je veux cette solution:

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

pourrais-tu m'aider s'il te plaît ?

+0

Qu'est-ce qu'un "numéro OLE"? –

+0

Convertit la valeur de cette instance en la date OLE Automation équivalente. –

+0

Une date OLE Automation est implémentée en tant que nombre à virgule flottante dont la composante intégrale est le nombre de jours avant ou après minuit, le 30 décembre 1899, et dont la composante fractionnaire représente l'heure de ce jour divisé par 24 –

Répondre

0

Date de soustraction de classe Ruby retourne le nombre de jours entre 2 dates, vous avez juste besoin de soustraire votre « époque personnalisée » (30 Décembre, 1899 à minuit) de l'autre jour:

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 

et qui devrait être OLE et vous pouvez aussi simplement l'ajouter pour aller dans l'autre sens:

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