(十一)time模块
2024-08-31 20:55:23
三种时间表示
在Python中,通常有这几种方式来表示时间:
- 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
- 元组(struct_time) :运行time.localtime(),返回一个struct_time元组,共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
- 格式化的时间字符串(Format string):就是我们比较熟悉的格式,比如2018-12-25 11:12:30
主要掌握上面两张图,左图是时间三种表示方式的相互装换,右图是两种快捷方式
print(time.time()) //时间戳
print(time.localtime()) //结构化时间(元组),默认参数为空的话,即当前时间
print(time.localtime(1473525444)) //如果有参数值,将这个时间戳转换为当前时区的struct_time
结果:1545890072.4237452
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=13, tm_min=54, tm_sec=32, tm_wday=3, tm_yday=361, tm_isdst=0)
time.struct_time(tm_year=2016, tm_mon=9, tm_mday=11, tm_hour=0, tm_min=37, tm_sec=24, tm_wday=6, tm_yday=255, tm_isdst=0)
timestamp转化为struct_time:两种方法
print(time.localtime()) //第一种localtime()上面已说明
print(time.gmtime()) //gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time
结果:
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=14, tm_min=32, tm_sec=40, tm_wday=3, tm_yday=361, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=6, tm_min=32, tm_sec=40, tm_wday=3, tm_yday=361, tm_isdst=0)
struct_time转化为timestamp:
print(time.mktime(time.localtime())) //localtime()是结构化时间,再用mktime()转,就是时间戳了
print(time.time()) //等价于上面的
结果:1545892076.0
1545892076.7587585
struct_time转化为Format string(很常用):
strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。
如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
print(time.strftime("%Y-%m-%d %X", time.localtime())) //"%Y-%m-%d %X"是自定义的格式,其中-可以随意变换
结果:2018-12-27 14:39:53
Format string转化为struct_time:
time.strptime(string[, format]),把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
结果:time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
还有右图的两个方法,提供了比较便利的两种方式:
asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。
ctime([secs]) : 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
print(time.asctime(time.localtime())) //也可以不写time.localtime() 直接print(time.asctime())
print(time.ctime(time.time())) //也可以不写time.time() 直接print(time.ctime())
结果:Thu Dec 27 15:32:49 2018
Thu Dec 27 15:32:49 2018
在这两个函数中,格式默认为:"%a %b %d %H:%M:%S %Y"。
最新文章
- [LeetCode] ZigZag Converesion 之字型转换字符串
- canvas绘制坐标轴
- UIkit框架之uiUIapplication
- sublime text 2 ubuntu安装及插件管理
- [Linux 性能检测工具]IOSTAT
- 《Inside UE4》-1-基础概念
- [CentOS7]安装mysql遇到的问题
- paper 48: Latex中如何制作参考文献
- mongodb的常用操作
- Android中关于List与Json转化问题
- poj 2531 Network Saboteur(经典dfs)
- WampServer PHP服务配置方法(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)
- [置顶] js模板方法的思路及实现
- Servlet学习的两个案例之网站访问次数的统计
- 玩转 SSH 目录
- Codeforces 850C Arpa and a game with Mojtaba
- Redis进阶实践之七Redis和Lua初步整合使用
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
- 初识Shiro
- 关于JPasswordField的getText()方法过时问题解决
热门文章
- Java8的StreamAPI常用方法总结
- JavaSE07-字符串常用API
- Loading class `com.mysql.jdbc.Driver'. This is deprecated警告处理
- Linux命令-1.远程登录
- 面试 03-DOM事件的总结
- 获取Web项目中的控制器类以及类中Action方法
- Linux下登录Oracle命令行时删除键^H解决方法
- BP暴力破解
- java解析导入excel表格转为实体类javabean,根据实体类中的中文名称
- java中如何实现同一账号不能同时登录