Python时间处理完全手册
处理时间是工作中非常常见的操作,最基本的获取当前时间,格式化时间,计算两个时间差,时间戳转换等等.
Python内置两个非常常用的时间处理库 time
和datetime
,足以满足工作中的各种需求。
datetime
功能更加强大, time
库就较为简练一些。
两个库互补使用,所有问题迎刃而解。
官方文档Python2.7 datetime(https://docs.python.org/2/library/datetime.html?highlight=datetime#module-datetime) 和 time(https://docs.python.org/2/library/time.html?highlight=time#module-time)
注意:time 或者 datetime 库需要提前import
WIKI:
UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。 在多数Unix系统上Unix时间可以通过date +%s指令来检查。
各地日期和时间表示法:yyyy = 年份,mm = 月份,dd = 日期,MMM = 月份三字母缩写,mmmm = 月份全名,hr = 小时,mi = 分钟,se = 秒钟
国际标准ISO 8601:yyyy-mm-dd,hr:mi:se(24小时制)
中国:yyyy年m月d日;hr时mi分se秒;hr:mi:se(12/24小时制)
美国:mm/dd/yyyy;mm/dd/yy;mmmm dd, yyyy;hr:mi:se(12小时制)
澳大利亚:dd/mm/yyyy;MMM dd, yyyy;hr:mi:se a.m./p.m.(12/24小时制)
时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。1863年,首次使用时区的概念。时区通过设立一个区域的标准时间部分地解决了这个问题。
一. 获取并格式化时间
使用time
模块获取当前时间
print time.strftime('%Y-%m-%d %H:%M:%S')# Out: '2016-12-01 16:10:27'
使用datetime
模块获取当前日期和当前时间
# 获取当前日期today = datetime.date.today()print today.strftime('%Y-%m-%d')# Out: '2016-12-01' # 获取当前日期now = datetime.datetime.now()print now.strftime('%Y-%m-%d %H:%M:%S')# Out: '2016-12-01 16:14:22' # 获取当前日期时间
二. 转换时间格式
例如我们拿到了一个时间字符串 161201 16:14:22
需要将其转换成其他格式。
# 获取当前日期today = datetime.date.today()print today.strftime('%Y-%m-%d')# Out: '2016-12-01' # 获取当前日期now = datetime.datetime.now()print now.strftime('%Y-%m-%d %H:%M:%S')# Out: '2016-12-01 16:14:22' # 获取当前日期时间
三. 计算两个时间间隔
计算时间间隔使用datetime
模块比较方便。
datetime.date为日期对象,最小精度为天。
datetime.datetime为日期时间对象,最小精度为妙(毫秒也可以)
实际使用中按需选择。
计算2016-12-1和1990-1-1中间天数和秒数
dt = datetime.date(2016,12,1) - datetime.date(1990,1,1)dt.days # 间隔天数# 将字符串转换为datetime.date对象dt_a = datetime.datetime.strptime('2016-12-1', '%Y-%m-%d') # datetime.date 无 strptime 方法dt_b = datetime.datetime.strptime('1990-1-1', '%Y-%m-%d') # 虽然格式化时间的时候%m为两位数月份# 但是反格式化时一位月份也可工作dt = dt_a - dt_bdt.days # 为 间隔天数dt.total_seconds() # 为 间隔秒数
计算两个时间戳间隔时间
timestamp_a, timestamp_b = 1480582517, 1480472517dt = datetime.datetime.fromtimestamp(timestamp_a) -datetime.datetime.fromtimestamp(timestamp_b)print dt.days, dt.total_seconds()# Out: 1 110000.0
四. 获取前N天,或者后N天时间
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
now = datetime.datetime.now()before_time = now - datetime.timedelta(days=1)after_time = now + datetime.timedelta(days=1)print before_time# Out: 2016-11-30 17:03:40.420000print after_time# Out: 2016-12-02 17:03:40.420000
五. 时间戳相关计算
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
通过时间戳可以快速直接得到很多信息
ts = int(time.time()) # ts = 1480583196print ts / 86400 % 7 + 3 # 获取时间戳对应的星期 0 周日 - 6 周六# Out: 3 # 周四# ===============timestamp_a, timestamp_b = 1480582517, 1480472517ts = timestamp_a - timestamp_bprint ts / 86400 # 获取两个时间戳相隔天数# ===============# 获取当天00:00:00的时间戳ts = int(time.time())print ts / 86400 * 86400# Out: 1480550400# ===============# 获取当天23:59:59的时间戳ts = int(time.time())print ts / 86400 * 86400 + 86400 - 1# Out: 1480636799
个人认为时间戳才是最有魅力的
六. 各种数据类型间转换
str > datetime.datetime
datetime.datetime.strptime('161201 16:14:22', '%y%m%d %H:%M:%S')
str > 时间元组
dt = datetime.datetime.strptime('161201 16:14:22', '%y%m%d %H:%M:%S')
dt.timetuple()
# or
struct_time = time.strptime('161201 16:14:22', '%y%m%d %H:%M:%S')
时间戳 > datetime.datetime 或 datetime.date
datetime.datetime.fromtimestamp(时间戳)
# or
datetime.date.fromtimestamp(时间戳)
时间戳 > 时间元组
time.gmtime(时间戳)
时间元组 > 时间戳
time.mktime(时间戳)
时间元组 > datetime.datetime 或 datetime.date
datetime.datetime.fromtimestamp(time.mktime(时间元组))
# or
datetime.date.fromtimestamp(time.mktime(时间元组))
时间戳 > 时间元组
time.gmtime(时间戳)
# or
dt = datetime.datetime.fromtimestamp(时间戳)
dt.timetuple()
七、格式化与反格式化控制字符对照表
字符 | 含义 | 例子 |
---|---|---|
%a | 当地格式的星期缩写 | Sun,Mon...Sat(en_US);So,Mo...Sa(de_DE) |
%A | 当地格式的星期全拼 | Sunday,Monday...Saturday(en_US);Sonntag,Montag...Samstag(de_DE) |
%w | 星期的数字表示0表示周日,6表示周六 | 0,1...6 |
%d | 日,当月第几天,两位数 | 01,02...31 |
%b | 当地格式的月份缩写 | Jan,Feb...Dec(en_US);Jan,Feb...Dez(de_DE) |
%B | 当地格式的月份全拼 | January, February,...,December(en_US);Januar,Februar...Dezember(de_DE) |
%m | 月份的数字表示,两位数 | 01,02...12 |
%y | 年份表示,不带世纪,两位数 | 00,01...99 |
%Y | 年份表示 | 1970,1971...2016 |
%H | 小时 0-23 | 00,01...23 |
%I | 小时 01-12 | 01,02...12 |
%p | 当地格式的上午下午表示 | AM,PM(en_US);am,pm(de_DE) |
%M | 分钟,两位数 | 00,01...59 |
%S | 秒,两位数 | 00,01...59 |
%f | 微妙,六位数 | 000000,000001...999999 |
%z | 时区偏移量,表示为+HHMM或-HHMM或空 | (空),+0000,-0400,+0800 |
%Z | 时区名字 | (空),UTC, EST, CST |
%j | 日,当年第几天,三位数 | 001,002...366 |
%U | 周,在年第几周,周日为一周的第一天,新年第一个星期日第0周,两位数 | 00,01...53 |
%W | 周,在年第几周,周一为一周的第一天,新年第一个星期一第0周,两位数 | 00,01...53 |
%c | 当地格式的时间日期表示 | Tue Aug 16 21:30:00 1988 (en_US);Di 16 Aug 21:30:00 1988 (de_DE) |
%x | 当地格式的日期表示 | 08/16/88 (None);08/16/1988 (en_US);16.08.1988 (de_DE) |
%X | 当地格式的时间表示 | 21:30:00 (en_US);21:30:00 (de_DE) |
%% | %字符 | % |
原文发布时间为:2016-12-08
本文作者:gw1770df
本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号
Python时间处理完全手册相关推荐
- python魔力手册-小白入门宝典:Python快速入门魔力手册 PDF 超清版
给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于小白入门.python入门.Python手册方面的内容,本书是由魔力手册出版,格式为PDF,资源大小11.8 MB,魔力手册编写,目前豆 ...
- 【Python基础】13个知识点,系统整理Python时间处理模块Datetime
作者:Lemon 来源:Python数据之道 前言 在用 Python 进行数据处理,尤其是时间序列数据的处理,经常会涉及处理时间或日期的地方,有些看似简单的问题,经常会混淆,甚至被困住. 本文分享的 ...
- 【Python基础】Python时间模块,超实用总结!
我的施工之路 施工之路已完成13篇图文,又提炼为思维导图,结合使用,效果最佳. 1我的施工计划 2数字专题 3字符串专题 4列表专题 5流程控制专题 6编程风格专题 7函数使用 8面向对象编程(上篇) ...
- python基础教程自学网-Python基础系统管理学习手册视频教程
Python 当前位置:主页 > 编程教程 > Python > Python基础&系统管理&学习手册视频教程 Python基础&系统管理&学习手册视 ...
- Python时间和日历讲解总结
Python时间和日历 一.time #time 模块导入 import time #首先得到当前的时间戳,获取以秒为单位的浮点时间 print(time.time()) #获取人可以直观理解的时间 ...
- python时间日期字符串各种
python时间日期字符串各种 python时间日期字符串各种 第一种 字符串转换成各种日期 time 库 # -*- coding: utf-8 -*- import time, datetime ...
- Python时间转换函数:时间转化为时间戳、时间戳转化为时间、当前日期、当前时间、星期几、前面或者后面多少天、年、月、日等
Python时间转换函数:时间转化为时间戳.时间戳转化为时间.当前日期.当前时间.星期几.前面或者后面多少天.年.月.日等 #Python时间转换函数:时间转化为时间戳.时间戳转化为时间.当前日期.当 ...
- python时间处理模块datetime+dateutil、numpy时间处理模块datetime64以及pandas时间处理模块Timestamp的演化路径及常用处理接口
python时间处理模块datetime+dateutil.numpy时间处理模块datetime64以及pandas时间处理模块Timestamp及常用处理接口 python时间处理模块dateti ...
- python 时间字符串
python 时间字符串 任意时间转字符串: import timet = time.time()- 60*60*24*30 time_string = time.strftime("%Y- ...
- 13个知识点,系统整理Python时间处理模块Datetime
/作者:Lemon/ 前言 在用 Python 进行数据处理,尤其是时间序列数据的处理,经常会涉及处理时间或日期的地方,有些看似简单的问题,经常会混淆,甚至被困住. 本文分享的内容来自 Lemon 整 ...
最新文章
- 关于如何安装less
- 数字图像处理-0.绪论
- 色彩管理实验 matlab,色彩管理实验报告1
- Springboot实现的医院分针挂号住院管理系统
- 作者讲述《一个操作系统的实现》的故事
- 最优化知识笔记整理汇总
- 自行车测速器怎么调_怎么测甲醛?
- vs code 格式化代码配置
- 2022.10.3-10.8 AI行业周刊(第118期):AI训练营
- 【冬瓜哥归来】传统存储老矣,新兴存储能当大任否?
- 中国的超级计算机银河号,美国突然切断GPS,是银河号的一次屈辱,中国:不会再让悲剧发生...
- Gluster部署案例
- 软件生存周期、项目生命周期、产品生命周期区别
- 联通路由如何设置虚拟服务器,联通光纤安装路由器怎么设置_联通光纤怎么连接无线路由器?-192路由网...
- 推荐系统之AFM代码详解
- 三维重建技术概论总结,入门必看~
- freemaker生成doc文档(特殊字符导致异常)
- 2021-11-19周赛总结
- gdb gdbtui
- vue elementui中el-table 动态合并行 数组去重
热门文章
- Code First开发系列之数据库迁移
- 优先队列 STL (转)
- android编译make错误——javalib.jar invalid header field”、classes-full-debug.jar 错误 41 ...
- 打造属于自己的 linux版(硬盘版或电子盘)view5 终端
- dede调用一个栏目下的子栏目
- 在Linux环境下安装JDK+JBoss
- ipv4反向路由配置
- 手动玩转虚拟地址到物理地址转化
- FRR BGP协议分析12 -- ZEBRA路由的处理1
- Linux进程的管理与调度(二)-- Linux的命名空间详解