UTC是最常用的统一时区,并且在datetime类中也受到支持,因此在系统会使用UTC时区时间。从服务器的角度来说,将时间戳标准化为UTC,意义重大,但这会为用户带来可用性问题。 对处于不同时区的用户,如果他们看到的是UTC时区中的时间,那么很难确定是何时发布的信息。 他们需要事先知道展示的时间是UTC时区的,才能在精神上调整自己的时区。

时区转换

解决方案是将所有时间戳从存储的UTC单位转换为每个用户的本地时间。 这样一来,服务器可以继续使用UTC来保持时区的一致性,而针对每个用户量身定制的即时转换来解决可用性问题。 这个解决方案棘手的部分是要知道每个用户的位置。

Moment.js和Flask-Moment简介

Moment.js是一个小型的JavaScript开源库,它将日期和时间转换成目前可以想象到的所有格式。 Flask-Moment,一个小型Flask插件,它可以使你在应用中轻松使用moment.js。

安装Flask_moment:

(microblog) D:\pythonProgram\PycharmProjects\microblog>pip install flask_moment
Collecting flask_momentDownloading Flask_Moment-1.0.2-py3-none-any.whl (5.7 kB)
Requirement already satisfied: Flask in d:\pycharmprojects\flask\microblog\lib\site-packages (from flask_moment) (2.0.1)
Requirement already satisfied: itsdangerous>=2.0 in d:\pycharmprojects\flask\microblog\lib\site-packages (from Flask->flask_moment) (2.0.1)
Requirement already satisfied: Jinja2>=3.0 in d:\pycharmprojects\flask\microblog\lib\site-packages (from Flask->flask_moment) (3.0.1)
Requirement already satisfied: Werkzeug>=2.0 in d:\pycharmprojects\flask\microblog\lib\site-packages (from Flask->flask_moment) (2.0.1)
Requirement already satisfied: click>=7.1.2 in d:\pycharmprojects\flask\microblog\lib\site-packages (from Flask->flask_moment) (8.0.1)
Requirement already satisfied: colorama in d:\pycharmprojects\flask\microblog\lib\site-packages (from click>=7.1.2->Flask->flask_moment) (0.4.4)
Requirement already satisfied: MarkupSafe>=2.0 in d:\pycharmprojects\flask\microblog\lib\site-packages (from Jinja2>=3.0->Flask->flask_moment) (2.0.1)
Installing collected packages: flask-moment
Successfully installed flask-moment-1.0.2

添加该插件到Flask应用中:
app/init.py:Flask-Moment实例:

# ...
from flask_moment import Momentapp = Flask(__name__)
# ...
moment = Moment(app)

应用的所有模板都必须包含moment.js。 最直接的方法是显式添加一个</script/>标签来引入库,但Flask-Moment的moment.include_moment()函数可以更容易地实现它,它直接生成了一个</script/>标签并在其中包含moment.js:

app/templates/base.html:

...{% block scripts %}{{ super() }}{{ moment.include_moment() }}
{% endblock %}

使用Moment.js

看看出现在个人主页中的时间戳。 当前的user.html模板使用Python生成时间的字符串表示。 现在我可以使用Flask-Moment渲染此时间戳,如下所示:
app/templates/user.html: 使用moment.js渲染时间戳。

  {% if user.last_seen %}<p>Last seen on: {{ moment(user.last_seen).format('LLL') }}</p>{% endif %}

moment对象为不同的渲染选项提供了几种方法。 以下是一些最常见的几种:

moment('2017-09-28T21:45:23Z').format('L')
"09/28/2017"
moment('2017-09-28T21:45:23Z').format('LL')
"September 28, 2017"
moment('2017-09-28T21:45:23Z').format('LLL')
"September 28, 2017 2:45 PM"
moment('2017-09-28T21:45:23Z').format('LLLL')
"Thursday, September 28, 2017 2:45 PM"
moment('2017-09-28T21:45:23Z').format('dddd')
"Thursday"
moment('2017-09-28T21:45:23Z').fromNow()
"7 hours ago"
moment('2017-09-28T21:45:23Z').calendar()
"Today at 2:45 PM"

在主页和个人主页调用的_post.html子模板添加一个用fromNow()渲染的时间戳:app/templates/_post.html: 在用户动态子模板中渲染时间戳。

 <a href="{{ url_for('user', username=post.author.username) }}">{{ post.author.username }}</a>said {{ moment(post.timestamp).fromNow() }}:<br> {{ post.body }}

可以看一下表现如何!

Study_microblog笔记Part 13--日期与时间相关推荐

  1. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  2. [Java笔记13] 日期与时间

    目录 Date Date的构造器 Date的常用方法 SimpleDateFormat SimpleDateFormat的构造器 SimpleDateFormat的格式化方法 Calendar Cal ...

  3. python 取整_马克的Python学习笔记#数字,日期和时间

    对数值进行调整 在Python中对整数和浮点数进行数字计算是很容易的.但是,如果你需要对分数,数组或者日期和时间进行计算,这就会稍微复杂点.对于简单的取整操作,我们可以使用内建的round(value ...

  4. python输入数字翻译成星期几-Python练习笔记——计算输入日期为改年的第几天、星期几...

    # 输入年月日,如:1995年12月10日,计算是该年的第几天? # 同时计算出当天是星期几? print("请依据提示依次输入您想查询的年 月 日") # 第一段代码块(年月日输 ...

  5. oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例

    天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...

  6. 《Java8实战》笔记(12):新的日期和时间API

    新的日期和时间API 相信大多数有经验的程序员都会赞同Java 8之前的库对日期和时间的支持就非常不理想.值得高兴的是 Java 8中引入全新的日期和时间API就是要解决这一问题. Java 8之前的 ...

  7. java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间

    正文之前 终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事,先写写笔 ...

  8. C# 把时间转为秒_Python基础学习笔记(六)日期与时间

    本节知识大纲: 日期与时间 一.时间日期基本介绍 时间日期类型在Python中主要有两个模块:time模块和datetime模块 time模块:是基于Unix Timestamp(时间戳)实现的,所能 ...

  9. excel学习笔记:数据格式,单元格格式(快捷键,自动调整行列宽,条件格式,自定义格式,日期星期时间的设置,特殊数字,多种填充方式,从下拉列表选择,数据验证。)

    文章目录 数据格式.单元格格式 1. 快捷键 2. 自动调整列/行宽 3. 条件格式 4. 日期设置 5. 星期设置 6. 时间设置 7. 特殊数字 8. 选中多个填充,ctrl选中,输入100,ct ...

最新文章

  1. SQLite中的SELECT子句使用表达式
  2. 树莓派4bwlan驱动_【DIY纯手工】用树莓派DIY的桌面电脑
  3. 详细分析 apache httpd 反向代理的用法
  4. zk4元年拆解_科比5 Protro开箱测评 zk5元年拆解赏析
  5. Flume之Source
  6. printf格式控制符的完整格式
  7. 【Hoxton.SR1版本】Spring Cloud Gateway网关初体验
  8. Android静默安装
  9. OpenCore启动项中无Install macOS Big Sur 的解决办法
  10. Android .apk逆向工程(安装篇):如何正确使用dex2jar
  11. 深度学习笔试、面试题 一
  12. VP9编码(4)-- 约定
  13. 10G家庭光纤网络如何部署?
  14. 计算机无法打开浏览器,Internet选项打不开怎么办?IE浏览器internet选项无法打开解决方法...
  15. 无人驾驶5: 贝叶斯公式
  16. 第十一届Java B组蓝桥杯真题
  17. 狂野飙车4java游戏音乐_狂野飙车8赛车背景音乐名称大全
  18. 飞腾cpu服务器浪潮信息,浪潮发布基于国产飞腾CPU的服务器
  19. mxnet-Gluon(一):mxnet-Gluon 入门
  20. 计算机还原桌面的文件会不会丢失,在用系统还原后会丢失文件吗?谢谢

热门文章

  1. vulnhub靶机-DC3-Writeup
  2. 关注养生 必做7个小动作
  3. 用钱买不到的救命、养生知识
  4. 狼牙战队10-07任务
  5. 2D游戏入门——小狐狸系列(二十)为人物添加下蹲动画
  6. 盈谷网络发布医学影像平台“医真云”,重新定义人工智能+大数据时代下的PACS系统
  7. 我叫mt4服务器维护时间,我叫mt4日常几点更新?日常任务刷新时间介绍[图]
  8. 2021-12-16 vue移动端卖座电影项目(十三) 使用vuex的getter筛选comingSoon的显示电影数
  9. 飞机大战游戏python_基于Python的飞机大战游戏
  10. ipad协议823最新版