This closes #409 Remove UTC timezone requirement from date.go (#853)

According to issue #409

There is absolutely no reason for the timezone to be in UTC, and converting the local times to UTC while keeping values is hacky at least.

Excel has no understanding of timezones, hence the user of this library should know what timezone their values are supposed to be, by following the timezone within their timeTime structs.
This commit is contained in:
Alluuu 2021-06-04 18:06:58 +03:00 committed by GitHub
parent 31d88a2624
commit 58f9287559
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 3 additions and 10 deletions

View File

@ -30,13 +30,6 @@ var (
func timeToExcelTime(t time.Time) (float64, error) {
// TODO in future this should probably also handle date1904 and like TimeFromExcelTime
// Force user to explicit convet passed value to UTC time.
// Because for example 1900-01-01 00:00:00 +0300 MSK converts to 1900-01-01 00:00:00 +0230 LMT
// probably due to daylight saving.
if t.Location() != time.UTC {
return 0.0, ErrToExcelTime
}
if t.Before(excelMinTime1900) {
return 0.0, nil
}

View File

@ -55,7 +55,7 @@ func TestTimeToExcelTime_Timezone(t *testing.T) {
for i, test := range trueExpectedDateList {
t.Run(fmt.Sprintf("TestData%d", i+1), func(t *testing.T) {
_, err := timeToExcelTime(test.GoValue.In(location))
assert.EqualError(t, err, ErrToExcelTime.Error())
assert.NoError(t, err)
})
}
}

View File

@ -144,7 +144,7 @@ func TestOpenFile(t *testing.T) {
assert.NoError(t, f.SetCellValue("Sheet2", "G2", nil))
assert.EqualError(t, f.SetCellValue("Sheet2", "G4", time.Now()), ErrToExcelTime.Error())
assert.NoError(t, f.SetCellValue("Sheet2", "G4", time.Now()))
assert.NoError(t, f.SetCellValue("Sheet2", "G4", time.Now().UTC()))
// 02:46:40

View File

@ -57,7 +57,7 @@ func TestStreamWriter(t *testing.T) {
assert.NoError(t, err)
assert.NoError(t, streamWriter.SetRow("A4", []interface{}{Cell{StyleID: styleID}, Cell{Formula: "SUM(A10,B10)"}}))
assert.NoError(t, streamWriter.SetRow("A5", []interface{}{&Cell{StyleID: styleID, Value: "cell"}, &Cell{Formula: "SUM(A10,B10)"}}))
assert.EqualError(t, streamWriter.SetRow("A6", []interface{}{time.Now()}), ErrToExcelTime.Error())
assert.NoError(t, streamWriter.SetRow("A6", []interface{}{time.Now()}))
for rowID := 10; rowID <= 51200; rowID++ {
row := make([]interface{}, 50)