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实现RSA加密(解密)算法
Feb 17 Python
常见的python正则用法实例讲解
Jun 21 Python
django中的setting最佳配置小结
Nov 21 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
python检索特定内容的文本文件实例
Jun 05 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
linux查找当前python解释器的位置方法
Feb 20 Python
详解Python locals()的陷阱
Mar 26 Python
Django用户认证系统 组与权限解析
Aug 02 Python
python编写一个会算账的脚本的示例代码
Jun 02 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 xml文件操作实现代码(二)
2009/03/20 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
php格式化时间戳
2016/12/17 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
JS随机密码生成算法
2019/09/23 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
Python实例一个类背后发生了什么
2016/02/09 Python
python中函数传参详解
2016/07/03 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
什么是Remote Module
2016/06/10 面试题
报效祖国演讲稿
2014/09/15 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
医院合作意向书范本
2015/05/08 职场文书
房产电话营销开场白
2015/05/29 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
yolov5返回坐标的方法实例
2022/03/17 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
nginx日志格式分析和修改
2022/04/28 Servers
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python