2015-05-26 89 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的商店日期是雙打,你從雙打中減去一個數字,然後將它轉換爲天。