time: Fix missing colon when formatting time zone offsets with seconds

When formatting time zone offsets with seconds using the stdISO8601Colon
and stdNumColon layouts, the colon was missing between the hour and minute
parts.

Fixes #8497.

LGTM=r
R=golang-codereviews, iant, gobot, r
CC=golang-codereviews
https://golang.org/cl/126840043
This commit is contained in:
Joel Stemmer 2014-08-08 12:42:20 -07:00 committed by Rob Pike
parent f69f45c538
commit 298c623e8c
2 changed files with 7 additions and 6 deletions

View File

@ -556,7 +556,7 @@ func (t Time) Format(layout string) string {
b = append(b, '+')
}
b = appendUint(b, uint(zone/60), '0')
if std == stdISO8601ColonTZ || std == stdNumColonTZ {
if std == stdISO8601ColonTZ || std == stdNumColonTZ || std == stdISO8601ColonSecondsTZ || std == stdNumColonSecondsTZ {
b = append(b, ':')
}
b = appendUint(b, uint(zone%60), '0')

View File

@ -502,10 +502,11 @@ func TestParseSecondsInTimeZone(t *testing.T) {
}
func TestFormatSecondsInTimeZone(t *testing.T) {
d := Date(1871, 9, 17, 20, 4, 26, 0, FixedZone("LMT", -(34*60+8)))
timestr := d.Format("2006-01-02T15:04:05Z070000")
expected := "1871-09-17T20:04:26-003408"
if timestr != expected {
t.Errorf("Got %s, want %s", timestr, expected)
for _, test := range secondsTimeZoneOffsetTests {
d := Date(1871, 1, 1, 5, 33, 2, 0, FixedZone("LMT", test.expectedoffset))
timestr := d.Format(test.format)
if timestr != test.value {
t.Errorf("Format = %s, want %s", timestr, test.value)
}
}
}