亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Excel 十進制日期時間轉換為 time.Time

將 Excel 十進制日期時間轉換為 time.Time

Go
qq_遁去的一_1 2022-10-17 19:45:16
在 Golang 中解析 excel 文件時,會讀取一個 date time 列,44531.553587963它實際上代表 time 12/01/2021 13:17:10。如何將此十進制表示形式轉換為time.Timego中的對象?
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

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

Excel 時間(通常,除非格式的奇怪舊版本除外)以 1899 年 12 月 30 日以來的天數為單位。本來是這樣的,它1.0等于 1900 年 1 月 1 日的午夜,但有人使用了錯誤的閏年算法,認為 1900 年 2 月有 29 天,而實際上只有 28 天,所以在那之后的所有日期都被取消了-1。他們沒有破壞現有的電子表格,而是保留了該錯誤,因此要獲得正確的日期(1900 年后),您必須將紀元向后偏移一天,因此1.0等于 1989-12-31 和0.0等于 1989-12-30。


無論如何,一旦我們知道了紀元,它只是一種小類型的雜耍,以納秒為單位將一天轉換為浮點數,乘以,然后轉換回持續時間,并將該持續時間添加到紀元。


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號