【发布时间】:2013-09-07 01:17:36
【问题描述】:
我正在制作一个可以托管我的博客的简单网络服务器,但无论我做什么;我无法在我的 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 的模板时,博客的日期被解析为默认日期:
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
这可能是我再次监督的一些 n00b 事情,但我只是看不出我不能覆盖时间。时间 输入一个切片或至少以我想要的格式打印它。
【问题讨论】:
-
我感觉这个问题与在 .Execute 中使用接口作为参数而不是使用结构有关。但还不是 100% 确定。
标签: google-app-engine go