三种时间表示

在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"。

最新文章

  1. [LeetCode] ZigZag Converesion 之字型转换字符串
  2. canvas绘制坐标轴
  3. UIkit框架之uiUIapplication
  4. sublime text 2 ubuntu安装及插件管理
  5. [Linux 性能检测工具]IOSTAT
  6. 《Inside UE4》-1-基础概念
  7. [CentOS7]安装mysql遇到的问题
  8. paper 48: Latex中如何制作参考文献
  9. mongodb的常用操作
  10. Android中关于List与Json转化问题
  11. poj 2531 Network Saboteur(经典dfs)
  12. WampServer PHP服务配置方法(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)
  13. [置顶] js模板方法的思路及实现
  14. Servlet学习的两个案例之网站访问次数的统计
  15. 玩转 SSH 目录
  16. Codeforces 850C Arpa and a game with Mojtaba
  17. Redis进阶实践之七Redis和Lua初步整合使用
  18. 微信小程序之微信登陆 —— 微信小程序教程系列(20)
  19. 初识Shiro
  20. 关于JPasswordField的getText()方法过时问题解决

热门文章

  1. Java8的StreamAPI常用方法总结
  2. JavaSE07-字符串常用API
  3. Loading class `com.mysql.jdbc.Driver'. This is deprecated警告处理
  4. Linux命令-1.远程登录
  5. 面试 03-DOM事件的总结
  6. 获取Web项目中的控制器类以及类中Action方法
  7. Linux下登录Oracle命令行时删除键^H解决方法
  8. BP暴力破解
  9. java解析导入excel表格转为实体类javabean,根据实体类中的中文名称
  10. java中如何实现同一账号不能同时登录