2015-05-26 90 views
0

我有一个方法,通过Excel电子表格运行,并将这些值放入一个数组,然后到PostgreSQL。一切运行良好,但包含日期的单元格值将返回为双精度值。我怎样才能得到日期值?另外,如果我不知道什么时候在Excel电子表格中显示日期值,并且我希望我的方法只在日期而不是另一个double时才将double转换为日期。红宝石宝石电子表格返回日期为双打

+1

如果他们是整数而不是双打,那么他们是“日期”,如果他们是双打,那么他们是日期和时间。这是因为Excel以序列化格式存储日期时间,其代表'dddd.tttt',其中dddd是自1900年1月0日以来的天数,而tttt是24小时日的小数部分。您的最佳匹配可能是将它们转换为Excel文件中的字符串,然后通过DateTime解析字符串。 – engineersmnky

回答

0

@engineersmnky评论和这篇文章帮我弄明白了。 How to convert MS excel date from float to date format in Ruby?

require 'date' 
require 'active_support/time' 
puts (DateTime.new(1899,12,30) + 42153.days).strftime("%Y-%m-%d") 
puts (Time.at((42153 - 25569).days).utc).strftime("%Y-%m-%d") 

这两种解决方案的工作。基本上,excel的商店日期是双打,你从双打中减去一个数字,然后将它转换为天。