time datetime

timedatetime是python处理时间的两个库,作用差不多
据说datetime的功能比time完善,为了保持一致,尽量都用datetime
所以time在我看来唯一的用处就是获取时间戳了

注意datetime里面还有个模块叫datetime,很恶心人,导入的时候小心点

import datetime

当前时间(精确到秒)

t = datetime.datetime.now()  # 2017-12-12 19:10:19.580580

当前日期(精确到天)

t = datetime.date.today()  # 2017-12-12

当前时间戳
datetime好像不能直接得到时间戳,所以先拿到当前时间,再转成时间戳

t = datetime.datetime.now()
stamp = t.timestamp()  # 1513077019.58058

或者通过time直接获取时间戳

import time

t = time.time()  # 1513077019.580655

应用

因为工作上的需要,要拿到一个日期(天)的第二天早上六点的时间,我是这么做的

先拿到零点的时间

t = datetime.date.today()  # 2017-12-12
t = datetime.datetime.strftime(t, "%Y-%M-%d %H:%M:%S")  # 2017-12-12 00:00:00

上面拿到的是字符串,需要转成datetime类型才能进行时间上的加减和比较

t = datetime.datetime.strptime(t, "%Y-%m-%d %H:%M:%S")  # 2017-12-12 00:00:00

加六个小时,也可以加daysminutesweeks等等

t = t + datetime.timedelta(hours=6)  # 2017-12-12 06:00:00

这样就拿到我想要的东西了,干什么用呢
第一个日期是用户已经登录过的日期,算出这个日期第二天早上六点的时间
只要用户在那个时间之前登录,都算已经登录过了,不做处理
在那个时间之后的第一次登录,就算新的一天的登录,做处理,并重置登录日期为今天

注意datetime类型的时间,是可以直接做比较的

t1 = 2017-12-12 19:00:00
t2 = 2017-12-12 20:00:00
t1 < t2  # True

在重置登录日期的时候,又遇到一个问题
如果在零点到六点之间重置,因为过了零点,日期算第二天了
但过了六点之后应该还要重置一次,判断条件已经达不到了

所以再做一个判断,是在零点和六点之间重置,日期就往回退一天

t = datetime.datetime.now()
h = t.hour
if h > 6:
    t = datetime.date.today()
else:
    t = datetime.date.today() - datetime.timedelta(days=1)

参考

网上的资料一片混乱,这篇是我看过写得最清楚的
https://zhuanlan.zhihu.com/p/23679915

这篇讲了timedatetime的区别与联系
http://gracece.com/2014/10/the-distinction-between-date-and-datetime-in-python/

再收藏一篇
http://www.wklken.me/posts/2015/03/03/python-base-datetime.html#1-huo-qu-dang-qian-datetime

posted @ 2018-01-30 17:06  宫内莲华x  阅读(124)  评论(0编辑  收藏  举报