Commits

Miki Tebeka committed 0505b5b

%j

  • Participants
  • Parent commits f111eee

Comments (0)

Files changed (2)

 	%d - Day of the month as a decimal number [01,31]
 	%H - Hour (24-hour clock) as a decimal number [00,23]
 	%I - Hour (12-hour clock) as a decimal number [01,12]
+	%j - Day of year	
 	%m - Month as a decimal number [01,12]
 	%M - Minute as a decimal number [00,59]
 	%p - Locale’s equivalent of either AM or PM
 
 
 Missing directives:
-	%j - Day of year	
 	%U - Week number of the year
 	%w - Weekday as a decimal number
 	%W - Week number of the year
 	}
 
 	format, ok := conv[match]
-	if !ok {
-		panic(fmt.Errorf("unknown directive - %s", match))
+	if ok {
+		return t.Format(format)
 	}
-	return t.Format(format)
+
+	switch match {
+	case "%j":
+		start := time.Date(t.Year(), 1, 1, 0, 0, 0, 0, time.UTC)
+		day := int(t.Sub(start).Hours()/24) + 1
+		return fmt.Sprintf("%03d", day)
+	}
+
+	panic(fmt.Errorf("unknown directive - %s", match))
+	return "" // Make compiler happy
 }
 
 // Format return string with % directives expanded.

File strftime_test.go

 		t.Fatalf("managed to expand %g")
 	}
 }
+
+func TestDayOfYear(t *testing.T) {
+	s , err := Format("%j", testTime)
+	if err != nil {
+		t.Fatalf("error expanding %j", err)
+	}
+
+	if s != "314" {
+		t.Fatalf("day of year != 314 (got %s)", s)
+	}
+}