Commit 406d7387 authored by Rob Pike's avatar Rob Pike

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

Fixes #1882.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4556062
parent a825e8a6
......@@ -272,9 +272,18 @@ func (t *Time) Format(layout string) string {
case stdHour:
p = zeroPad(t.Hour)
case stdHour12:
// Noon is 12PM.
if t.Hour == 12 {
p = "12"
} else {
p = strconv.Itoa(t.Hour % 12)
}
case stdZeroHour12:
if t.Hour == 12 {
p = "12"
} else {
p = zeroPad(t.Hour % 12)
}
case stdMinute:
p = strconv.Itoa(t.Minute)
case stdZeroMinute:
......
......@@ -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) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment