在 Golang 中決議 excel 檔案時,讀取的日期時間列44531.553587963實際上表示時間12/01/2021 13:17:10。
如何將此十進制表示轉換為time.Timego 中的物件?
uj5u.com熱心網友回復:
var in float64 = 44531.553587963
excelEpoch := time.Date(1899, 12, 30, 0, 0, 0, 0, time.UTC)
tm := excelEpoch.Add(time.Duration(in * float64(24 * time.Hour)))
fmt.Println(tm) // 2021-12-01 13:17:10.000003072 0000 UTC
自 1899 年 12 月 30 日以來,Excel 時間(通常,除非格式的奇怪的舊版本除外)以天為單位。它本來1.0應該等于 1900-01-01 的午夜,但有人使用了錯誤的閏年演算法,認為 1900 年 2 月有 29 天,而它只有 28 天,因此該點之后的所有日期都已關閉-1. 他們沒有破壞現有的電子表格,而是將那個錯誤留在原地,因此要獲得正確的日期(1900 年后),您必須將紀元向后偏移一天,因此1.0等于 1989-12-31 和0.01989-12-30。
無論如何,一旦我們知道了 epoch,它只是一種小雜耍,將一天以納秒為單位轉換為浮點數,乘以,然后轉換回持續時間,并將該持續時間添加到 epoch。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/383984.html
下一篇:如何在VBA中自動向下填充列
