User
模型中的datetime
对象,并且完全忽略了Post
模型中的datetime
对象。datetime.now()
调用返回我所处位置的本地时间,而datetime.utcnow()
调用则返回UTC时区中的时间。 如果我可以让遍布世界不同地区的多人同时运行上面的代码,那么datetime.now()
函数将为他们每个人返回不同的结果,但是无论位置如何,datetime.utcnow()
总是会返回同一时间。 那么你认为哪一个更适合用在一个很可能其用户遍布世界各地的Web应用中呢?datetime
类中也受到支持,因此我将会使用它。app/__init__.py
:Flask-Moment实例。<script>
标签来引入库,但Flask-Moment的moment.include_moment()
函数可以更容易地实现它,它直接生成了一个<script>
标签并在其中包含moment.js:scripts
块是Flask-Bootstrap基础模板暴露的另一个块,这是JavaScript引入的地方。该块与之前的块不同的地方在于它已经在基础模板中定义了一些内容了。我想要追加moment.js库的话,就需要使用super()
语句,才能继承基础模板中已有的内容,否则就是替换。{{ year }}-{{ month }}-{{ day }}T{{ hour }}:{{ minute }}:{{ second }}{{ timezone }}
。 我已经决定我只使用UTC时区,因此最后一部分总是将会是Z
,它表示ISO 8601标准中的UTC。moment
对象为不同的渲染选项提供了几种方法。 以下是一些最常见的几种:format()
,你可以控制字符串的输出格式,类似于Python中的strftime函数。 fromNow()
和calendar()
方法很有趣,因为它们会根据当前时间显示时间戳,因此你可以获得诸如“一分钟前”或“两小时内”等输出。moment
对象,大大简化了对moment.js的使用,并融合了所需的JavaScript逻辑,使渲染后的时间展示在页面上。moment()
的参数现在是Python的datetime
对象,而不是ISO 8601字符串。 从模板发出的moment()
调用也会自动生成所需的JavaScript代码,以将呈现的时间戳插入DOM的适当位置。fromNow()
渲染的时间戳: