Python时间获取及转换知识汇总


Posted in Python onJanuary 11, 2017

 时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime、获取当天date、获取明天/前N天、获取当天开始和结束时间(00:00:00 23:59:59)、获取两个datetime的时间差、获取本周/本月/上月最后一天等。而这些转换看起来很乱不容易记住,那么今天我们就来总结一下Python的时间的处理。

原则:以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理

步骤:

1. 掌握几种对象及其关系

2. 了解每类对象的基本操作方法

3. 通过转化关系转化

datetime是date与time的结合体,包括date与time的所有信息。

函数原型是:

datetime. datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

实例:

1.获取datetime对象

代码如下:

import datetime
now = datetime.datetime.now()
#输出:datetime.datetime(2016, 11, 26, 8, 34, 30, 876359)

2.获取timestamp(时间戳)

时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。

代码如下:

import time
time.time()
#输出:1480120686.733905

3.获取time tuple (元组)

代码如下:

import time
time.localtime()
#输出:time.struct_time(tm_year=2016, tm_mon=11, tm_mday=26, tm_hour=8, tm_min=39, tm_sec=33, tm_wday=5, tm_yday=331, tm_isdst=0)

4.获取时间string(字符串)

字符串格式化参数列表:
datetime. strftime (format)
%a: 星期的简写。如 星期三为Web
%A: 星期的全写。如 星期三为Wednesday
%b: 月份的简写。如4月份为Apr
%B: 月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %

代码如下:

import datetime
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2016-11-26 08:40:39'

5.date(日期)

代码如下:

import datetime
datetime.datetime.now().date()
datetime.date(2016, 11, 26)

6.获取当天date

代码如下:

import datetime
datetime.date.today()
datetime.date(2016, 11, 26)

7.获取明天/前N天

明天

代码如下:

import datetime
datetime.date.today() + datetime.timedelta(days=1)
datetime.date(2016, 11, 27)

两天前

代码如下:

import datetime
>>> datetime.datetime.now()
datetime.datetime(2016, 11, 26, 8, 42, 59, 665368)
>>> datetime.datetime.now() - datetime.timedelta(days=3)
datetime.datetime(2016, 11, 24, 8, 43, 14, 696948)

8.获取当天开始和结束时间(00:00:00 23:59:59)

代码如下:

import datetime
datetime.datetime.combine(datetime.date.today(), datetime.time.min)
datetime.datetime(2016, 11, 26, 0, 0)
datetime.datetime.combine(datetime.date.today(), datetime.time.max)
datetime.datetime(2016, 11, 26, 23, 59, 59, 999999)

9.获取两个datetime的时间差

代码如下:

import datetime
(datetime.datetime(2016,12,13,12,0,0) - datetime.datetime.now()).total_seconds() 
1480506.809658

10.获取本周/本月/上月最后一天

本周

代码如下:

import datetime
today = datetime.date.today()
#输出: datetime.date(2016, 11, 26)
sunday = today + datetime.timedelta(6 - today.weekday())
#输出:datetime.date(2016, 11, 27)

本月

代码如下:

import calendar
today = datetime.date.today()
last_day_num = calendar.monthrange(today.year, today.month)
last_day = datetime.date(today.year, today.month, last_day_num)
#输出:datetime.date(2016, 11, 30)

11.获取上个月的最后一天(可能跨年)

代码如下:

import datetime
today = datetime.date.today()
first = datetime.date(day=1, month=today.month, year=today.year)
lastMonth = first - datetime.timedelta(days=1)
#输出:datetime.date(2016, 10, 31)

其他使用例子:

代码如下:

#当月1号
datetime.date(datetime.date.today().year,datetime.date.today().month,1)
#当月1号 
datetime.date.today().replace(day=1) 
#上月1号 
(datetime.date.today().replace(day=1) - datetime.timedelta(1)).replace(day=1)

以上所述是小编给大家介绍的Python时间获取及转换知识汇总,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现DNS正向查询、反向查询的例子
Apr 25 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
python统计中文字符数量的两种方法
Jan 31 Python
python使用thrift教程的方法示例
Mar 21 Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 Python
django删除表重建的实现方法
Aug 28 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 Python
json跨域调用python的方法详解
Jan 11 #Python
Python中遇到的小问题及解决方法汇总
Jan 11 #Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 #Python
SQLite3中文编码 Python的实现
Jan 11 #Python
利用python实现数据分析
Jan 11 #Python
使用python调用zxing库生成二维码图片详解
Jan 10 #Python
利用Python生成文件md5校验值函数的方法
Jan 10 #Python
You might like
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
Python中IPYTHON入门实例
2015/05/11 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python对excel文档去重及求和的实例
2018/04/18 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Unix如何在一行中运行多个命令
2015/05/29 面试题
我爱家乡演讲稿
2014/09/12 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫