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写的一个wordpress的采集程序
Feb 27 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
python hmac模块验证客户端的合法性
Nov 07 Python
Django model class Meta原理解析
Nov 14 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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编程中10个最常见的错误
2014/08/08 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
什么是会话Bean
2015/05/14 面试题
《狼和小羊》教学反思
2014/04/20 职场文书
2014年国庆标语
2014/06/30 职场文书
法人代表证明书格式
2014/10/01 职场文书
党员自评材料范文
2014/12/17 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
毕业生政审意见范文
2015/06/04 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书