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. c++调用c#写的DLL
  2. 快速 Get 面试题中:线程池七个参数和工作原理问题,理解万岁
  3. java编程代写有哪些平台,学习路线+知识点梳理
  4. 【报告分享】2021年小红书美妆护肤洞察报告.pdf(附下载链接)
  5. PHP函数中true表示什么,使用返回true或false的函数的PHP最佳实践是什么?
  6. vba遍历字符串_操蛋的VBA程序错误!
  7. win10下安装Cygwin配置gcc编译环境
  8. sqli-lab(8)
  9. QQ定时发消息vbs代码
  10. MES系统的选择需重点考虑哪些方面?
  11. 设计师常用网站,建议收藏
  12. Leetcode466.统计重复个数——掐头去尾寻找循环点
  13. 工业强国之路任重道远,制造业乘“疾风”突出重围
  14. C# Winform实现导入和导出Excel文件
  15. Android颜色对照表
  16. 写php程序出现乱码怎么办?
  17. 全球与中国网络性能监控工具市场现状及未来发展趋势
  18. Minecraft 开服记录 自动备份
  19. wireshark 802.11 WLAN无线报文分析常用技巧总结
  20. Linux进程KILL--Quit,INT,HUP,QUIT,和TERM、PIPE的解释

热门文章

  1. js:写入/获取/清除缓存
  2. echart 桑基图操作事项
  3. fgets()函数的详解以及使用时需要注意的一些细节-C语言基础
  4. 少女Q的量化交易之路 #week6 之一
  5. java控制浏览器_Selenium常用API的使用java语言之7-控制浏览器操作
  6. ubutnu系统维护
  7. 三大运营商的频段-信号
  8. linux网络服务器学习总结
  9. ubuntu 20.04安装中文输入法使用不了
  10. 小伙利用C++模仿酷狗7(Kugou7) UI界面源码,附带炫酷动画效果哦