Django接触了一段时间,总算写出了一个比较完整的博客。对于常年混迹于Java开发的我,着实遇到一些麻烦。
Django接触了一段时间,总算写出了一个比较完整的博客。对于常年混迹于Java开发的我,着实遇到一些麻烦。
Django第一篇,先说一下学习中,我最初遇到的问题。
没错,就是时间戳。实在不能理解为什么百度搜索“python时间戳”,出现通篇讲date、time1、datetime区别的文。我最关心的,只有“时间戳的获取、及格式化
”。
import time
timestamp = time.time()
到这里就结束了?是的就是这样。如果只是记录时间戳,到这里就可以了。 But,我们需要输出格式化的时间~
在处理时间之前,一定要setting中设置时区
,划重点!!
打开setting.py
,找到TIME_ZONE
,设置如下:
TIME_ZONE = 'Asia/Shanghai'
留学的高材生们,请自行搜索对应地区代码。
接下来就是格式化输出了。我习惯是在数据库存储时间戳,在需要的地方转换成时间字符串使用。这样处理时间在各种语言开发中都比较常见。
将long类型的时间戳timestamp赋值给time
import time
time.localtime(timestamp)
时间戳为字符串,记得先转换一下long(timestamp)
时间格式化使用的是time模块内部函数strftime
:
import time
timestr = time.strftime('%Y-%m-%d',time.localtime(timestamp))
%Y、%m、%d分别代表年月日,常用指令如下:
%Y: 年份,如2018 %m: 月份,如01 %d: 代表在月份中的哪一天[01-31] %H: 小时,24小时制 %M: 分钟[0-59] %S: 秒[00,61],啥玩意61?没错,官方文档解释是可以支持闰秒60的显示,由于不知名的历史原因,61也支持。
为什么觉得坑呢,因为我们亲爱的sdf常用格式化字符串是“yyyy-MM-dd HH:mm:ss”。看来开发者是C++出身,延用了部分C风格。
完整的格式化指令参考这里。
到这里,还没有结束,上面只是python的处理方式。Django还有自己的过滤器,用于在页面中格式化显示时间。
Django在模版层可以使用filter来控制数据的显示。其中date用来格式化datetime等日期类型的数据。模板可能随时都会替换,较为良好的时间处理方式,是将要显示的日期对象传给模板,在模板层控制具体的表现。 直接上代码:
{{ datetime|date:"Y-m-d H:i:s" }}
你说上面的i是什么玩意?m、s怎么小写了?我怎么知道Django设计者怎么想的。总之这里与python的不同,常用的在上面的代码中应该也能看出来,这里就不说了。有趣的是s这里官方给出的范围是'00'-'59',比较传统了。感觉同一个日期python和django输出,会相差那么几秒。
date过滤器的指令还有很多,请参考这里。
这一篇就讲到这里,有不足的地方请不吝赐教。