導入EXCEL 時間數據爲小數 問題

同事在作將EXCEL導入數據庫功能時發現一個奇怪的問題:在EXCEL中,有一列數據明明呈現出時間格式,好比:18:35,但導到數據庫中,竟然一串長長的小數:0.7743055555555556,我靠,這是什麼鬼。數據庫

後來發現,原來EXCEL裏面,其實就是小數,只不過,設置單元格格式爲時間時,就呈現 時:分 這種友好的樣子;當設置爲文本時,馬上原形畢露。markdown

怎麼辦呢?在網上尋尋覓覓,沒有頭緒。這是一種什麼樣的時間格式?或者說,這是一種什麼樣的時間?爲何不是UTC?從1900年以來的,格林威治時間的秒數?spa

關鍵是要理清思路。原來,這個小數是 時分 在 一天 中的佔比。也就是:code

(時 * 60 + 分 ) / 24 * 60

公式的意義不言而喻(同理,若是有秒,就將時間所有換算成秒再計算就好了),細想系統這麼處理也是有道理的,時間格式那麼多,索性所有換成數字最準確。爲啥不是什麼UTC之類,由於沒有日期,只有時間。string

知道了緣由就簡單了。咱們將EXCEL原本來本導入到數據庫,呈現的時候,在頁面換算一下就好了。換算方法以下:class

= 小數 *24 取整(不要四捨五入) 分 = (小數 * 24 * 60 )% 60
相關文章
相關標籤/搜索