私は自分のブログをホストできるこの単純な Web サーバーを作成していますが、何をしても構いません。HTML/テンプレートに適切なフォーマットの時間を実行できません。
これが私がすることです:
私はこの構造体を作成しました:
type Blogpost struct {
Title string
Content string
Date time.Time
}
次に、Appengine データストアから対応するタイトル/日付を含むブログ投稿を取得し、それをスライスとして返す、この小さな関数を作成しました。
func GetBlogs(r *http.Request, max int) []Blogpost {
c := appengine.NewContext(r)
q := datastore.NewQuery("Blogpost").Order("-Date").Limit(max)
bp := make([]Blogpost, 0, max)
q.GetAll(c, &bp)
return bp
}
最後に、blogHandler で、次を使用して Appengine データストアから取得したデータに基づいてスライスを作成します。
blogs := GetBlogs(r, 10)
このようにブログというテンプレートを実行すると、ブログの日付がデフォルトの日付として解析されます。
blog.Execute(w, blogs) // gives dates like: 2013-09-03 16:06:48 +0000 UTC
だから、私は Golang n00b であり、次のような関数が私が望む結果をもたらすと言うでしょう
blogs[0].Date = blogs[0].Date.Format("02-01-2006 15:04:05") // Would return like 03-09-2013 16:06:48, at least when you print the formatted date that is.
ただし、その結果、もちろん型の競合が発生します。これを次を使用して解決しようとしました。
blogs[0].Date, _ = time.Parse("02-01-2006 15:04:05", blogs[0].Date.Format("02-01-2006 15:04:05")) // returns once again: 2013-09-03 16:06:48 +0000 UTC
それはおそらく私がもう一度見落としたものですが、time.Timeをオーバーライドできない方法がわかりません。スライスに入力するか、少なくとも必要な形式で出力してください。