Ruby: 如何将 VARIANT DATE 转换为日期时间

Ruby: how to convert VARIANT DATE to datetime

在我的项目中,我从 VARIANT DATE 类型的外部系统日期和时间获取,需要将其转换为日期时间(即 43347.6625 => 04/09/2018 16:29:59)。

你知道ruby怎么做吗?什么是最好的方法?我没有找到任何 ruby 内置方法来进行这种转换...

这里是计算的方法,你给的日期不对,应该是这个方法返回的,用https://planetcalc.com/7027/

查一下
def variant2datetime variant
  # number of days after 1-1-1900 minus 2 days for starting with 0
  # and having a day that didn't exist because 1900 wasn't a leap year
  date = Time.new("1900-01-01") + (variant.to_i - 2) * 24 * 60 * 60
  fraction = variant % 1
  hours   = (fraction - fraction.to_i) * 24
  minutes = (hours - hours.to_i) * 60
  seconds = (minutes - minutes.to_i) * 60
  Time.new(date.year, date.month, date.day, hours.to_i, minutes.to_i, seconds.to_i)
end

variant2datetime 43347.6625 # 2018-09-04 15:53:59 +0200