1
0
mirror of https://github.com/golang/go synced 2024-11-22 03:34:40 -07:00

time: fix Format bug: noon is 12PM, not 0PM.

Fixes #1882.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4556062
This commit is contained in:
Rob Pike 2011-05-27 23:24:39 +10:00
parent a825e8a69f
commit 406d73876d
2 changed files with 41 additions and 2 deletions

View File

@ -272,9 +272,18 @@ func (t *Time) Format(layout string) string {
case stdHour:
p = zeroPad(t.Hour)
case stdHour12:
p = strconv.Itoa(t.Hour % 12)
// Noon is 12PM.
if t.Hour == 12 {
p = "12"
} else {
p = strconv.Itoa(t.Hour % 12)
}
case stdZeroHour12:
p = zeroPad(t.Hour % 12)
if t.Hour == 12 {
p = "12"
} else {
p = zeroPad(t.Hour % 12)
}
case stdMinute:
p = strconv.Itoa(t.Minute)
case stdZeroMinute:

View File

@ -302,6 +302,36 @@ func TestParseErrors(t *testing.T) {
}
}
func TestNoonIs12PM(t *testing.T) {
noon := Time{Hour: 12}
const expect = "12:00PM"
got := noon.Format("3:04PM")
if got != expect {
t.Errorf("got %q; expect %q", got, expect)
}
got = noon.Format("03:04PM")
if got != expect {
t.Errorf("got %q; expect %q", got, expect)
}
}
func Test12PMIsNoon(t *testing.T) {
noon, err := Parse("3:04PM", "12:00PM")
if err != nil {
t.Fatal("error parsing date:", err)
}
if noon.Hour != 12 {
t.Errorf("got %d; expect 12", noon.Hour)
}
noon, err = Parse("03:04PM", "12:00PM")
if err != nil {
t.Fatal("error parsing date:", err)
}
if noon.Hour != 12 {
t.Errorf("got %d; expect 12", noon.Hour)
}
}
// Check that a time without a Zone still produces a (numeric) time zone
// when formatted with MST as a requested zone.
func TestMissingZone(t *testing.T) {