@@ -828,6 +828,43 @@ func TestAppendEscapedTextExistingBuffer(t *testing.T) {
828
828
}
829
829
}
830
830
831
+ var formatAndParseTimestamp = []struct {
832
+ time time.Time
833
+ expected string
834
+ }{
835
+ {time.Time {}, "0001-01-01 00:00:00Z" },
836
+ {time .Date (2001 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 0 )), "2001-02-03 04:05:06.123456789Z" },
837
+ {time .Date (2001 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 2 * 60 * 60 )), "2001-02-03 04:05:06.123456789+02:00" },
838
+ {time .Date (2001 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , - 6 * 60 * 60 )), "2001-02-03 04:05:06.123456789-06:00" },
839
+ {time .Date (2001 , time .February , 3 , 4 , 5 , 6 , 0 , time .FixedZone ("" , - (7 * 60 * 60 + 30 * 60 + 9 ))), "2001-02-03 04:05:06-07:30:09" },
840
+
841
+ {time .Date (1 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 0 )), "0001-02-03 04:05:06.123456789Z" },
842
+ {time .Date (1 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 2 * 60 * 60 )), "0001-02-03 04:05:06.123456789+02:00" },
843
+ {time .Date (1 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , - 6 * 60 * 60 )), "0001-02-03 04:05:06.123456789-06:00" },
844
+
845
+ {time .Date (0 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 0 )), "0001-02-03 04:05:06.123456789Z BC" },
846
+ {time .Date (0 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , 2 * 60 * 60 )), "0001-02-03 04:05:06.123456789+02:00 BC" },
847
+ {time .Date (0 , time .February , 3 , 4 , 5 , 6 , 123456789 , time .FixedZone ("" , - 6 * 60 * 60 )), "0001-02-03 04:05:06.123456789-06:00 BC" },
848
+
849
+ {time .Date (1 , time .February , 3 , 4 , 5 , 6 , 0 , time .FixedZone ("" , - (7 * 60 * 60 + 30 * 60 + 9 ))), "0001-02-03 04:05:06-07:30:09" },
850
+ {time .Date (0 , time .February , 3 , 4 , 5 , 6 , 0 , time .FixedZone ("" , - (7 * 60 * 60 + 30 * 60 + 9 ))), "0001-02-03 04:05:06-07:30:09 BC" },
851
+ }
852
+
853
+ func TestFormatAndParseTimestamp (t * testing.T ) {
854
+ for _ , val := range formatAndParseTimestamp {
855
+ formattedTime := FormatTimestamp (val .time )
856
+ parsedTime , err := ParseTimestamp (nil , string (formattedTime ))
857
+
858
+ if err != nil {
859
+ t .Errorf ("invalid parsing, err: %v" , err .Error ())
860
+ }
861
+
862
+ if val .time .UTC () != parsedTime .UTC () {
863
+ t .Errorf ("invalid parsing from formatted timestamp, got %v; expected %v" , parsedTime .String (), val .time .String ())
864
+ }
865
+ }
866
+ }
867
+
831
868
func BenchmarkAppendEscapedText (b * testing.B ) {
832
869
longString := ""
833
870
for i := 0 ; i < 100 ; i ++ {
0 commit comments