|
|
|
|
@ -17,12 +17,13 @@ func timeToUTCTime(t time.Time) time.Time {
|
|
|
|
|
func timeToExcelTime(t time.Time) float64 {
|
|
|
|
|
// TODO in future this should probably also handle date1904 and like TimeFromExcelTime
|
|
|
|
|
var excelTime float64
|
|
|
|
|
var deltaDays int64
|
|
|
|
|
excelTime = 0
|
|
|
|
|
deltaDays = 290 * 364
|
|
|
|
|
// check if UnixNano would be out of int64 range
|
|
|
|
|
for t.Unix() > 9223372036 {
|
|
|
|
|
for t.Unix() > deltaDays*24*60*60 {
|
|
|
|
|
// reduce by aprox. 290 years, which is max for int64 nanoseconds
|
|
|
|
|
deltaDays := 290 * 364
|
|
|
|
|
delta := time.Duration(deltaDays * 8.64e13)
|
|
|
|
|
delta := time.Duration(deltaDays) * 24 * time.Hour
|
|
|
|
|
excelTime = excelTime + float64(deltaDays)
|
|
|
|
|
t = t.Add(-delta)
|
|
|
|
|
}
|
|
|
|
|
|