summaryrefslogtreecommitdiff
path: root/date.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2018-06-27 14:03:06 +0800
committerGitHub <noreply@github.com>2018-06-27 14:03:06 +0800
commit13cf7a3b0316f7ca0f7554d22b0f06b53b41a168 (patch)
tree86fcc43440e0225b3c7ea306d1e35dfeed478151 /date.go
parent3a91b28ddbca53d09b46612fa4c2c29a65d42e41 (diff)
parent4855a43bc6a4724c5518634ffec3967d03c45663 (diff)
Merge pull request #243 from liepumartins/patch-2
Restore date 32bit compatibility
Diffstat (limited to 'date.go')
-rw-r--r--date.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/date.go b/date.go
index e078374..f3db0ee 100644
--- a/date.go
+++ b/date.go
@@ -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)
}
@@ -103,7 +104,7 @@ func doTheFliegelAndVanFlandernAlgorithm(jd int) (day, month, year int) {
// timeFromExcelTime provides function to convert an excelTime representation
// (stored as a floating point number) to a time.Time.
func timeFromExcelTime(excelTime float64, date1904 bool) time.Time {
- const MDD int64 = 106750 // Max time.Duration Days, aprox. 290 years
+ const MDD int64 = 106750 // Max time.Duration Days, aprox. 290 years
var date time.Time
var intPart = int64(excelTime)
// Excel uses Julian dates prior to March 1st 1900, and Gregorian
@@ -127,7 +128,7 @@ func timeFromExcelTime(excelTime float64, date1904 bool) time.Time {
} else {
date = time.Date(1899, 12, 30, 0, 0, 0, 0, time.UTC)
}
-
+
// Duration is limited to aprox. 290 years
for intPart > MDD {
durationDays := time.Duration(MDD) * time.Hour * 24