我想以人类可读的格式生成格式化日期。通常在英语区域设置中,后缀用于该月的某一天,即第1,第2,第3,第4,第5等等。
我尝试使用格式字符串"Monday 2nd January"
来格式化这些日期,但它似乎不起作用。
E.g。在the playground中:
import (
"fmt"
"time"
)
const format = "Monday 2nd January"
func main() {
t1 := time.Date(2015, 3, 4, 1, 1, 1, 1, time.UTC)
fmt.Println(t1.Format(format))
t2 := time.Date(2015, 3, 1, 1, 1, 1, 1, time.UTC)
fmt.Println(t2.Format(format))
}
这会生成结果
Wednesday 4nd March
Sunday 1nd March
但我希望
Wednesday 4th March
Sunday 1st March
我做错了什么?
答案 0 :(得分:3)
它不支持这种格式化,你必须自己实现它,像这样的东西(hacky):
func formatDate(t time.Time) string {
suffix := "th"
switch t.Day() {
case 1, 21, 31:
suffix = "st"
case 2, 22:
suffix = "nd"
case 3, 23:
suffix = "rd"
}
return t.Format("Monday 2" + suffix + " January")
}