python 时间模块 time datetime calendar复习与比较

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨王翔丨
来研丨清风Python

学而时习之,不亦悦乎。经常的复习下之前的知识,不仅加深、巩固记忆,还能在复习的同时,查漏补缺。
今天针对python库自带的三个时间模块进行复习。。。。

time模块

time模块提供各种操作时间的函数

由于time模块是python自带的,所以只需要简单的import time就ok了

获取时间戳

time.time()函数可以用来获取当前时间的时间戳。即自1970-01-01开始的格林威治标准时间
这里需要解释两点
1.why 1970-01-01?

这个时间是以UNIX诞生时间,unix认为1970年1月1日0点是时间纪元,其他编程语言的时间戳也是这么使用的
格林威治时间即为0时区时间,中学地理肯定学过本初子午线吧,哈哈....
好了返回正题

t=time.time()
print(t)
# 1519818341.5785086
# 简单的计算一下
year=t / (24*60*60*365) +1970
# 2018.1931234645647 
# 得到当前年份
获取时间元组

使用localtime函数即可得到一个元组结构化的时间格式

t1=time.localtime()
print(t1)
# time.struct_time(tm_year=2018, tm_mon=2, tm_mday=28, tm_hour=19, tm_min=45, tm_sec= 41, tm_yday=59 tm_isdst=0)

如果你给定一个时间戳,也可以通过localtime将时间戳转化为时间元组随便写一个时间
tt=time.localtime(1513810287.1759758)

格式化时间

1.将时间戳格式化

result=time.ctime(t)
print(result)
# Wed Feb 28 19:49:33 2018

2.将时间元组格式化

result=time.asctime(time.localtime())
print(result)

3.格式化日期字符串

result=time.strftime(“%Y-%m-%d %H:%M:%S”,time.localtime())
print(result)
时间元组格式化为时间戳

t3=time.mktime(time.localtime())

时间字符串转化为
pt=time.strtime(‘18-02-28 19:53:23’,’%y-%m-%d %H:%M:%S’)
print(pt)
耗时计算
start=time.clock()
for i in range(1000):
    print(i)
end=time.colock() 
print(end-start)
时间等待

time.sleep(3)
这个没啥讲的了。。。

日历模块

python的日历模块Calender提供了多种日历展示模式:

参数说明示例
setfirstweekday(firstweekday)0是星期一,…,6为星期日calendar.setfirstweekday(firstweekday=6)
monthcalendar(year, month)返回一个月中天数列表(不是当前月份的天数为0)calendar.monthcalendar(2019, 6)
prmonth(theyear, themonth, w=0, l=0)w每个单元格宽度,l每列换l行calendar.prmonth(2019, 6)
calendar.month_abbr[month]打印月份对应的英文简写calendar.month_abbr[6]
.........

基本的就是上面这些了....

打印文本日历,算是时间模块的一种,但是坦白说,貌似没什么卵用....

>>> import calendar
>>> calendar.setfirstweekday(firstweekday=6)
>>> calendar.monthcalendar(2019,5)
>>> [[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11],
     [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25],
     [26, 27, 28, 29, 30, 31, 0]]
>>> calendar.monthcalendar(2019,6)
>>> [[0, 0, 0, 0, 0, 0, 1], [2, 3, 4, 5, 6, 7, 8], 
     [9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19, 20, 21, 22],
     [23, 24, 25, 26, 27, 28, 29], [30, 0, 0, 0, 0, 0, 0]]
>>> len(calendar.monthcalendar(2019,5))
>>> 5
>>> len(calendar.monthcalendar(2019,6))
>>> 6
datetime模块

datetime模块包含三个子类,datetime date time。它主要用来处理时间,使用前先倒入datetime模块
import datetime

显示当前时间
print(datetime.datetime.now())
or
print(datetime.datetime.today())

那么显示当前时间的年、月、日等改怎么操作呢?很简单

print(datetime.datetime.now().year)
print(datetime.datetime.now().day)
当前时间tuple

dateime.datetime.now().timetuple()

显示当前日期

datetime.datetime.now().date()

计算N天后的时间
today=datetime.datetime.today()
future=today+datetime.timedelta(days=7)
print(future)
计算时间差
first=datetime.datetime(2017,9,9,12,1,03)
second=datetime.datetime(2018,2,28,19,20,11)
delta=second-first
print(delta)
# 172 days ,7:19:08
print(delta.tatal_seconds())
14887148.0
时间转化

datetime转str:
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
str格式转化为datetime格式:
datetime.datetime.strptime("2018-02-20 11:50:20" , "%Y-%m-%d %H:%M:%S")
时间戳转datetime

datetime.datetime.fromtimestamp(1519826222)
# datetime.datetime(2018,2,28,21,57,2)

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:  

 10年巨变,我女神成了我老婆...

 一个程序员的水平能差到什么程度?

 在一个公司死磕5-10年的程序员都怎么样了?

 史上最污技术解读,我竟然秒懂了


在看点这里好文分享给更多人↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值