post.date.year取值错误
Hi Hepo,
新年好呀!
今天发现一个问题,就是跨到2020年之后,日志的年份计算有问题。
在代码中
oldest\_post = d.get\_data(types='post', return\_one=true, sort='asc')
latest\_post = d.get\_data(types='post', return\_one=true, sort='desc')
year\_oldest = oldest\_post.date.year
year\_latest = latest\_post.date.year
span= latest\_post.title
span= latest\_post.date
span= latest\_post.date.year
但是html渲染出来是
2020-01-01 2020-01-01 00:00 2019
为啥date是正确但date.year却出现了问题呢?
页面:https://potatorib.tk/archive/
谢谢,
好像只有1月1日的时间会出现年份划分混乱...除了用if语句来单独判断一下,还有别的好办法吗?
@wellsleep 用 post.date('%y') 来获取 year,因为存储的是 utc 时间,直接取 year,获得的是没有时区修正到+8时候的原始值。
@Hepo 谢谢~ 但是应该怎么修正时区呢?
翻了一下 pi.bitcron.com 里的问题解答,主页的 dashboard 里时区原本设的是8.0,是需要改模板吗?
@wellsleep 用post.date('%y') 来获取 year 就可以了,这是自动的。
@Hepo 我大概明白了你的意思。不过由于在取全年日志数量的时候,迭代是不是还是只能用 utc 的时间来计数?
好比
https://potatorib.tk/archive/2017 这一页的代码是
```
request_year = request.path.split('/')[-1]
header.post-header
h1.post-title= '这是 ' + request_year + ' 年干的傻事'
section.post-content
year_start_date = '%s-1-1'%request_year
year_end_date = '%s-12-31'%request_year
entries = get_data(type='post',limit=120, sort='desc', date_start=year_start_date, date_end=year_end_date).group('-date:year')
for year, year_posts in entries
.year
span= year
year_start_date = '%s-1-1'%year
year_end_date = '%s-12-31'%year
yearly_count = get_data(type='post', return_count=True, date_start=year_start_date, date_end=year_end_date)
span.yearly_count= "(%s)"%yearly_count
ul.posts_in_year: for post in year_posts: li
span.date= post.date.format("%m/%d")
a(href=post.url, title=post.title)= post.title
```
year 的取值是迭代出来的,在 `.group('-date:post.date('%y')')` 这么来改也不对...
@wellsleep year_start_date = '%s-1-1 8:00'%year 试试,可能反向取值没有再做转义,直接用 utc 来查询了。
反复测试了一下,似乎发现了原因。
原来 2017-01-01 的日志由于是从 Wordpress 转换的,默认 metadata 是 2017-01-01 02:11:47+0000。如果改成 2017-01-01 02:11:47 效果相同,而如果改成 2017-01-01 10:11:47 分类就对了。
所以原因应该是抓取文章默认按照 UTC 时间,而我们比较习惯东8区的时间。
另外 year_start_date = '%s-1-1 8:00'%year 的办法没用,不知道是不是 date_start 不考虑小时的缘故...(话说抓出来是 02:11:47 也还是会被划到前一年吧?)
多谢帮助!啥时候开放新版公测哇?