]> Cypherpunks repositories - gostls13.git/commitdiff
time: fix Format bug: noon is 12PM, not 0PM.
authorRob Pike <r@golang.org>
Fri, 27 May 2011 13:24:39 +0000 (23:24 +1000)
committerRob Pike <r@golang.org>
Fri, 27 May 2011 13:24:39 +0000 (23:24 +1000)
Fixes #1882.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4556062

src/pkg/time/format.go
src/pkg/time/time_test.go

index 7b5a8f3b67fbcf7d78d5249b85fb221aa2ebc731..4b427f9d75faddf6c14c8816527addd3cc226d50 100644 (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:
index 1d83291c097a8bd88bba1049218ed4db74c42fbe..9c70ad1cc19cb7cd4af011baeb575e7d58efd904 100644 (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) {