gpt4 book ai didi

google-app-engine - 使用 html/template 在 slice 中执行格式化时间

转载 作者:IT老高 更新时间:2023-10-28 13:06:38 29 4
gpt4 key购买 nike

我正在制作一个可以托管我的博客的简单网络服务器,但无论我做什么;我无法在我的 html/模板中执行正确的格式化时间。

这是我的工作:

我已经创建了这个结构:

type Blogpost struct {
Title string
Content string
Date time.Time
}

接下来我创建了这个小函数,它从 Appengine 数据存储中检索具有相应标题/日期的博文,并将其作为 slice 返回:

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 数据存储区检索到的数据创建了一个 slice :

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 事情,但我只是看不出我不能覆盖时间。时间 输入一个 slice 或至少以我想要的格式打印它。

最佳答案

当我在寻找类似的功能来简单地格式化和呈现 html/template 中的 time.Time 类型时,我偶然发现 go 的模板解析器允许方法在 certain restrictions 下调用渲染 time.Time 类型时。

例如;

type Post struct {
Id int
Title string
CreatedOn time.Time
}

// post is a &Post. in my case, I fetched that from a postgresql
// table which has a datetime column for that field and
// value in db is 2015-04-04 20:51:48

template.Execute(w, post)

并且可以在如下模板中使用该时间:

<span>{{ .CreatedOn }}</span>
<!-- Outputs: 2015-04-04 20:51:48 +0000 +0000 -->

<span>{{ .CreatedOn.Format "2006 Jan 02" }}</span>
<!-- Outputs: 2015 Apr 04 -->

<span>{{ .CreatedOn.Format "Jan 02, 2006" }}</span>
<!-- Outputs: Apr 04, 2015 -->

<span>{{.CreatedOn.Format "Jan 02, 2006 15:04:05 UTC" }}</span>
<!-- Outputs: Apr 04, 2015 20:51:48 UTC -->

作为注释;我的 go 版本是 go1.4.2 darwin/amd64

希望对他人有所帮助。

关于google-app-engine - 使用 html/template 在 slice 中执行格式化时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598480/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com